我正在尝试检测iOS6中的抖动,似乎每个示例都早在2009年左右就为iOS3编写了,但没有任何效果。这是我的方法:

- (void) motionEnded: (UIEventSubtype) motion withEvent: (UIEvent *) event {
    if (motion == UIEventSubtypeMotionShake) NSLog(@"Detected a shake");
}

我已经尝试了Apple的建议(制作了一个返回canBecomeFirstResponderYES方法并调用了它),但是它什么也没做。很好,但对不被识别的震动没有影响。

我已经阅读了一些有关需要创建自定义版本的视图的内容,但是我真的不想解决这个问题,因为我没有以编程方式创建视图,并且其中有四个左右。

提前致谢!

最佳答案

在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/

10-09 13:08