3

揺れを検出するために必要なすべてのことを行ったと思いますが、motionEnded:withEvent:呼び出されません。(UIViewController私のアプリは「OpenGL ES App」テンプレートに基づいています。)

私は私のに追加application.applicationSupportsShakeToEdit = YES;しましたapplication:didFinishLaunchingWithOptions:、そして

- (BOOL)canBecomeFirstResponder { return YES; }

EAGLView.m (これは呼び出されます) および(他のさまざまな場所も試しました) [self becomeFirstResponder];initWithCoder:

しかし、デバッガーは決してヒットしません

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

いくつかのステップがありませんか?コントローラーは必要ですか?

(私は iPad シミュレーターで iOS 3.2 を使用しています。)

4

4 に答える 4

4

これをコントローラーに追加する必要があります。

-(void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    [self becomeFirstResponder];
}

-(BOOL)becomeFirstResponder
{
    return YES;
}
于 2013-09-20T19:12:20.943 に答える
3

シェイク通知でチェーンが機能する方法UIResponderは不快です。常に通知をUIWindow受け取るように見えますが、サブレスポンダーはチェーンの上位に依存する場合とそうでない場合があります。サブクラスを作成UIWindowし、次のウィンドウ クラスとして定義しました。

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event 
{
    if (event.type == UIEventSubtypeMotionShake) 
        [[NSNotificationCenter defaultCenter] postNotificationName:@"UIEventSubtypeMotionShakeEnded" object:nil];
}

次に、シェイク通知が必要なすべてのビューについて、イベントのオブザーバーとして自分自身を追加するだけで、UIEventSubtypeMotionShakeEnded毎回取得できました。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(shakeNotification:)
                                             name:@"UIEventSubtypeMotionShakeEnded" object:nil];
于 2011-04-03T23:12:08.280 に答える
0

ビューがビュー階層に入る前に、ファーストレスポンダーになることはできません。

于 2010-08-21T00:12:42.670 に答える
0

SDK の最新バージョンに更新すると、魔法のように問題が修正されました。[肩をすくめる]

于 2010-08-24T21:40:52.197 に答える