私は、動作するかどうかを見るためにmotionBegan:withEvent:メソッドをビューコントローラに配置しましたが、呼び出されていません。 viewWillAppear
では、私はビューコントローラを最初のレスポンダとし、canBecomeFirstResponder
からYESを返します。アプリケーションデリゲートに振りジェスチャーイベントを渡す
このビューコントローラはスプリットビューのマスターペインにあるため、デバイスを揺する前に最初のレスポンダが変更されている可能性があります。
しかし私の本当の疑問は、どのように私のアプリケーションの代理人のハンドラにすべてのモーションイベントを渡すことができますか?私は本当にmotionBegan:withEvent:すべてのView Controllerのメソッドまたはすべての最初のレスポンダーの代理人を持つ必要がありますか?このようなイベントをUIResponderにコードを挿入することなくレスポンダーチェーンを流れさせる方法はありませんか?それはあると思われますが、私はこれを行う方法について私の指を置いていません。
UIApplicationクラスとUIApplicationMain関数がこれにどのように結びついているのかお礼してくれてありがとう。これは私が慣れていない領域であり、それについて知ることは非常に便利です。私がこの権利を理解すれば(そして今夜試してみましょう)、サブクラス化されたUIApplicationでは、 'sendEvent : '、直ちに(振る舞いのように)扱いたい人に作用させてから、通常の処理が必要な人には[super sendEvent:event]を呼び出します。 – Jim
UIApplicationのサブクラス化は完全に機能しました。関心のある他の人にとっては、デバイスがユーザーのポケットに入っていても揺れイベントが発生する可能性があります。追加のフィルタリングが必要になります。 – Jim