0

アプリを介してさまざまな画面のフルスクリーンオーバーレイを表示するために、カスタムUIWindow、UIViewController、およびUIViewを作成しました。オーバーレイの表示、回転、および非表示はうまく機能します。

ただし、問題は、カスタムUIWindowを閉じた後、基になるビューの1つにある検索ボックスに青いカーソルが点滅しないことです。キーボードが表示され、検索ボックスに文字を入力できますが、カーソルは入力できません。

もう1つの奇妙な点は、カーソルがiOSシミュレーターでは期待どおりに表示されるが、デバイスでは表示されないことです。

誰かがここで何が起こっているのか考えがありますか?すべてのビューがResignFirstResponder()であることを確認するために、オーバーレイビュー階層をトラバースしてみました。任意のアイデアをいただければ幸いです。ありがとう。

4

1 に答える 1

0

理解した。元の UIWindow への参照を取得しようとした時点で、追加の UIWindow がいくつか存在していました。KeyWindow プロパティを使用して、元のウィンドウを取得しようとしました。しかし、KeyWindow は、私が期待していた UIWindow ではありませんでした。ローディング スピナーをアクティブにしたので、ウィンドウのタイプは _UIAlertNormalizingOverlayWindow でした。そのため、メイン アプリケーション ウィンドウを取得する代わりに、Windows 配列の 0 インデックスを呼び出しています。その後、正しい UIWindow で MakeKeyAndVisible を呼び出すことができました。

何らかの理由で、間違ったウィンドウで MakeKeyAndVisible を呼び出すと、iOS がテキスト フィールドなどにカーソルを表示するために使用するウィンドウ タイプである UITextEffectsWindow を隠しているように見える奇妙な現象が発生しました。

したがって、私の学んだ教訓は、KeyWindow プロパティにアクセスするときに取得する Windows 配列のインスタンスを想定しないことです。

于 2012-12-01T06:24:14.577 に答える