我在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];
}
答案 0 :(得分:3)
如果UIViewController在应用程序的最开始加载,我在OS 3.0中看到了一个奇怪的故障,它不会成为第一个响应者,除非你稍微延迟了相应的消息。尝试放置
[self performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0.3];
在-loadView或首次设置控制器时调用的其他内容。
可能有更优雅的方法可以解决这个问题,但这种方法对我有用。
答案 1 :(得分:0)
在震动期间,viewController必须是第一个接收此事件的响应者。
这可能是它无法正常工作的一个原因。