objective-c - 试图检测抖动,从不调用motionEnded

标签 objective-c ios shake motion-detection

我正在尝试检测 iOS6 中的震动,似乎每个示例都是在 2009 年左右为 iOS3 编写的,并且没有任何工作正常。这是我的方法:

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

我已经尝试过 Apple 的建议(创建一个返回 canBecomeFirstResponderYES 方法并调用它),但它什么也没做。它被称为罚款,但对无法识别的抖动没有影响。

我已经阅读了一些关于需要创建我的 View 的自定义版本的内容,但我真的不想搞砸,因为我没有以编程方式创建 View ,并且有四个左右。

提前致谢!

最佳答案

在您的 viewController 中,您必须覆盖方法 caneBecomeFirstResponder 并回答是,在 viewDidAppear 中您必须将您的 viewController (self) 设置为第一响应者。这是代码:

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

相关文章:

ios - UINavigationBar barButtonItem 更改返回按钮图像和标题

iphone - 没有边框的 UIBarButtonItem

ios - Windows 服务器上的 Apple 推送通知证书

ios - 开发插入与分销插入

flutter - 在后台 flutter 应用程序仅工作 1 分钟后停止工作,Dart-Isolates 是否适合尝试?

c# - Windows 通用应用程序中的加速度计摇动事件不起作用

iphone - 如何检测 iPhone 的震动并进行编程

objective-c - 为什么在使用 XCode 和 xcodebuild 之间存在差异?

ios - swift3 日期到数据,数据到日期转换

ios - 使用自动布局将 View 定位在 (c + (x * superview.width))