我正在尝试在这个页面上实现摇晃“教程”,但我觉得我漏掉了一些东西。我将他的加速计函数复制到我的AppViewController.m文件中,并在其中添加了一些nslogs,以查看当我使用模拟器的“摇晃”功能时,它是否进入该函数。调试控制台中没有任何显示。
http://mithin.in/2009/07/28/detecting-a-shake-using-iphone-sdk
有人能解释一下我可能错过的东西吗?或者给我指一条教程的路?
我找到了这个,看起来很有前途,但我不知道如何“将它放在UIView中” 如何检测iPhone被摇晃的时候
编辑 - 现在根据已接受的答案建议,这是我的工作代码。
以下是我用于检测3.0 iphone sdk中摇晃手势的代码。
-(BOOL)canBecomeFirstResponder {
return YES;
}
-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self becomeFirstResponder];
}
- (void)viewWillDisappear:(BOOL)animated {
[self resignFirstResponder];
[super viewWillDisappear:animated];
}
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {
NSLog(@"{motion ended event ");
if (motion == UIEventSubtypeMotionShake) {
NSLog(@"{shaken state ");
}
else {
NSLog(@"{not shaken state ");
}
}
becomeFirstResponder
是不必要的。唯一需要执行的操作是确保viewController可以成为firstResponder,以便响应运动事件。正如文档所述,UIView通过响应者链传递motionBegan
等消息,最终会找到视图的控制器,只要canBecomeFirstResponder
返回YES即可。 - Joshua J. McKinnon