1

私はiOS6で揺れを検出しようとしていますが、これまでのすべての例は2009年かそこらでiOS3用に書き戻されたようで、何もうまく機能していません. これが私の方法です:

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

canBecomeFirstResponderApple の提案 ( を返すメソッドを作成し、それを呼び出す)を試しましたYESが、何もしません。細かいといいますが、ブレが認識されないなどの影響はありません。

ビューのカスタムバージョンを作成する必要があることについていくつか読んだことがありますが、プログラムでビューを作成したのではなく、4つほどあるので、それを台無しにしたくありません。

前もって感謝します!

4

2 に答える 2

16

viewController 内でメソッド caneBecomeFirstResponder をオーバーライドし、yes と答える必要があります。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];
}
于 2012-12-04T13:18:39.017 に答える
-2

viewDidLoad ではなく、viewDidAppear が必要であることがわかりました。理由はわかりません。

于 2012-12-04T14:49:56.780 に答える