2

我的 viewController 里面有这个:

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {

    if (event.type == UIEventSubtypeMotionShake) {

        NSLog(@"I have shaked");

    }
}

为什么这不起作用? 编辑:


我确实有这个:

- (void) viewWillAppear:(BOOL)animated
{
    [shakeView becomeFirstResponder];
    [super viewWillAppear:animated];
}
- (void) viewWillDisappear:(BOOL)animated
{
    [shakeView resignFirstResponder];
    [super viewWillDisappear:animated];
}
4

2 回答 2

3

如果 UIViewController 在应用程序的一开始就加载,我在 OS 3.0 中看到了一个奇怪的故障,除非您稍微延迟适当的消息,否则它不会成为第一响应者。尝试放置

[self performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0.3];

在 -loadView 或首次设置控制器时调用的其他内容中。

可能有一种更优雅的方法来解决这个问题,但这种方法对我有用。

于 2009-12-31T13:59:05.090 回答
0

viewController 必须是摇动期间的第一响应者才能接收此事件。

这可能是它不起作用的原因之一。

于 2009-12-31T06:13:04.730 回答