0

ビュー コントローラに motionBegan:withEvent: メソッドを配置して動作するかどうかを確認しましたが、呼び出されていません。ではviewWillAppear、View Controller をファーストレスポンダーにして、 から YES を返しcanBecomeFirstResponderます。

このビュー コントローラーは分割ビューのマスター ペインにあるため、デバイスを振る前にファーストレスポンダーが変更された可能性があります。

しかし、私の本当の質問は、すべてのモーション イベントをアプリ デリゲートのハンドラーに渡すにはどうすればよいかということです。すべてのビュー コントローラーまたはすべてのファーストレスポンダーにデリゲートで motionBegan:withEvent: メソッドを使用する必要がありますか? 各 UIResponder にコードを挿入せずに、このようなイベントをレスポンダー チェーンに流す方法はありませんか? あるようですが、これを行う方法については指を置いていません。

4

2 に答える 2

1

最も簡単な方法はオーバーライド-sendEvent:UIApplication、すべてのイベントを制御できます

このクラスを使用できること

int retVal = UIApplicationMain(argc, argv, @"myApplication", @"myAppDelegate");

別の解決策は、カテゴリを作成するか-viewWillAppear: 、詳細情報を展開することです

于 2012-05-13T19:18:34.400 に答える
0

パスで行ったことは、motionBeganメソッドを実装するUIWindowのカテゴリを作成することです。そのmotionBeganメソッドでは、カスタムNSNotificationをブロードキャストします。次に、モーションイベントが必要なアプリケーションの任意の場所に、モーション通知のオブザーバーを追加するだけです。

カテゴリはオブジェクトのすべてのインスタンスにメソッドを追加するため、システムで作成されたウィンドウでもmotionBeganメソッドを取得し、正しいことを行います。それは美しく動作します。

于 2012-05-13T20:08:44.673 に答える