iOS: как реализовать событие "Shake Device"?

Я хочу, чтобы в моем приложении появилось событие "Shake Device" - то есть когда пользователь встряхивает устройство, что-то происходит. Я пытался реализовать:

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

Это не похоже на работу.......
Кто-нибудь знает, какой метод мне следует использовать?

3 ответа

Попробуйте использовать приведенный ниже код, он работал нормально для меня.

- (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;
}

Возможно, уже поздно отвечать, но в ваш viewDidLoad вам нужно включить.

[self becomeFirstResponder];

Дайте это попробовать.

В дополнение к решению Тейлора, также убедитесь, что ваш AppDelegate.m содержит это.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    application.applicationSupportsShakeToEdit = YES;
    return YES;
}
Другие вопросы по тегам