2

私はviewControllerの中にこれを持っています:

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

    if (event.type == UIEventSubtypeMotionShake) {

        NSLog(@"I have shaked");

    }
}

なぜこれが機能しないのですか? 編集:


私は実際にこれを持っています:

- (void) viewWillAppear:(BOOL)animated
{
    [shakeView becomeFirstResponder];
    [super viewWillAppear:animated];
}
- (void) viewWillDisappear:(BOOL)animated
{
    [shakeView resignFirstResponder];
    [super viewWillDisappear:animated];
}
4

2 に答える 2

3

UIViewController がアプリケーションの開始時に読み込まれると、OS 3.0 で、適切なメッセージを少し遅らせない限りファーストレスポンダにならないという奇妙な不具合が見られました。置いてみる

[self performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0.3];

-loadView またはコントローラーが最初にセットアップされたときに呼び出される何か内。

これを回避するためのよりエレガントな方法があるかもしれませんが、このアプローチは私にとってはうまくいきました。

于 2009-12-31T13:59:05.090 に答える
0

このイベントを受信するには、viewController がシェイク中に最初のレスポンダーである必要があります。

これが機能しない理由の 1 つかもしれません。

于 2009-12-31T06:13:04.730 に答える