iOS:如何实现“摇动设备”事件?

Posted

技术标签:

【中文标题】iOS:如何实现“摇动设备”事件?【英文标题】:iOS: How to Implement a "Shake Device" event? 【发布时间】:2011-07-24 13:02:35 【问题描述】:

我想为我的应用程序添加一个“摇动设备”事件 - 即,当用户摇动设备时,会发生一些事情。 我尝试实施:

-(void) motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event 
    if (event.subtype == UIEventSubtypeMotionShake) 
        //something happens
    

它似乎不起作用....... 有谁知道我应该使用哪种方法?

【问题讨论】:

【参考方案1】:

尝试使用下面的代码,它对我来说很好。

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event

    if ( event.subtype == UIEventSubtypeMotionShake )
       
          //your code
       

    if ( [super respondsToSelector:@selector(motionEnded:withEvent:)] )
                [super motionEnded:motion withEvent:event];

- (BOOL)canBecomeFirstResponder

    return YES;

【讨论】:

【参考方案2】:

回答可能为时已晚,但您需要在 viewDidLoad 中加入。

[self becomeFirstResponder];

试试看。

【讨论】:

你还必须添加... -(BOOL)canBecomeFirstResponderreturn YES;【参考方案3】:

除了 Taylor 的解决方案,还要确保你的 AppDelegate.m 中有这个。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    application.applicationSupportsShakeToEdit = YES;
    return YES;

【讨论】:

以上是关于iOS:如何实现“摇动设备”事件?的主要内容,如果未能解决你的问题,请参考以下文章

将摇动手势事件传递给应用程序委托

摇动设备以在 Android 中启动应用程序

《iOS Human Interface Guidelines》——Undo and Redo

Swift-摇动结束后查找位置

iOS:如何实现遮罩视图事件穿透?

UIAccelerometer 在摇晃