3

ウィンドウでタッチ イベントを確認する必要があったため、UIWindow をサブクラス化して MYWindow クラスを作成しました。ウィンドウでタッチ イベントを受信するために sentEvent 関数をオーバーライドしていますが、すべて正常に動作しています。これを達成するために次のことを行いました。

self.window = [[MYWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[window makeKeyAndVisible];

私が直面している問題は、これを行うと、このウィンドウにあるviewControllerが回転しなくなることです。通常の UIWindow を使用すると、それらはすべて、意図したとおりに機能します。明らかに、私の設定に何か問題があります。

UIWindowヘッダーファイルを調べていたところ、というメソッドがあります

- (void)becomeKeyWindow;  //override point for subclass, Do Not call directly

sendEvent: メソッドを実装する必要があったのと同じように、これをカスタム UIWindow クラスに実装する必要があるのでしょうか? これで正しい方向に向けてください。

よろしくお願いします。

4

2 に答える 2

4

私は問題が何であるかを理解しました。カスタムウィンドウでデリゲートを作成していて、それを「デリゲート」と呼んでいたため、問題が発生していました。「aDelegate」に名前を付けると、問題が解決しました。ご助力いただきありがとうございます。

于 2010-07-29T01:23:23.417 に答える
0

私はここで推測しているだけですが、それはあなたがMYWindow今キーウィンドウを作成したためであり(透明であっても)、クラスのshouldAutorotateToInterfaceOrientation:一部ではなく.UIViewControllerUIWindow

そのため、他のビューが表示されていても、回転イベントが呼び出されなくなりました。

UIWindowサブクラスにする代わりにUIView、タッチ イベントを処理する必要があるビューに追加される にそれらのタッチ イベントを実装してみませんか? 透明にすることもできますが、回転はそのままにしておきUIViewControllerますか?

于 2010-07-28T14:40:45.187 に答える