iPhone Shake事件无法正常工作

时间:2009-12-31 05:41:38

标签: iphone shake motion-detection

我在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];
}

2 个答案:

答案 0 :(得分:3)

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

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

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

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

答案 1 :(得分:0)

在震动期间,viewController必须是第一个接收此事件的响应者。

这可能是它无法正常工作的一个原因。