我正在尝试检测iOS6中的抖动,似乎每个示例都早在2009年左右就为iOS3编写了,但没有任何效果。这是我的方法:
- (void) motionEnded: (UIEventSubtype) motion withEvent: (UIEvent *) event {
if (motion == UIEventSubtypeMotionShake) NSLog(@"Detected a shake");
}
我已经尝试了Apple的建议(制作了一个返回
canBecomeFirstResponder
的YES
方法并调用了它),但是它什么也没做。很好,但对不被识别的震动没有影响。我已经阅读了一些有关需要创建自定义版本的视图的内容,但是我真的不想解决这个问题,因为我没有以编程方式创建视图,并且其中有四个左右。
提前致谢!
最佳答案
在viewController内部,您必须重写方法caneBecomeFirstResponder并回答yes,在viewDidAppear中,您必须将viewController(自身)设置为第一响应者。这是代码:
-(void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {
if (motion == UIEventSubtypeMotionShake) NSLog(@"Detected a shake");
}
-(BOOL)canBecomeFirstResponder {
return YES;
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self becomeFirstResponder];
}
关于objective-c - 试图检测到抖动,从不调用motionEnded,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13703140/