7

iPhone の UIWebView で UIMenuController の [定義] をタップして開く辞書を閉じると、次のエラーが発生し続けます:-

Unbalanced calls to begin/end appearance transitions for <_UIFallbackPresentationViewController: 0x10ab9640>.

そして、このエラーの後、UIMenuController はすべての UIWebView で表示されなくなります。

ここで何が起こっているのですか?

更新:実際には、ディクショナリ ビューを閉じるときではなく、開いているときにエラーが表示されます。

更新 2:エラーはアプリ全体です。選択可能なテキスト (つまり、webview、textview など) がある場所ならどこでも、辞書の定義は 1 回しか使用できません。このエラーが表示され、辞書を使用するには、アプリを終了して再度起動する必要があります。

4

2 に答える 2

4

ついにこれに対する答えを見つけました。辞書がシステムによって提示されると、そのウィンドウにフォーカスが移ります(UIWindowのmakeKeyAndVisible:を参照)。これはすばらしいことです。問題は、辞書を保持しているウィンドウがメインアプリケーションウィンドウに適切にフォーカスを戻さない場所を閉じるときに発生します。

辞書が表示される前後に[UIApplicationsharedApplication].keyWindowを印刷すると、アプリケーションウィンドウがkeyAndVisibleになる前と、その後は別のウィンドウであることがわかります。私の場合、ステータスバーの上に表示されるアプリメッセージ用の別のウィンドウがあり、辞書が閉じられた後、そのウィンドウがkeyAndVisibleでした。

したがって、それを修正するために私がしなければならなかったのは、誤ってフォーカスを受け取ったUIWindowサブクラスに次のオーバーライドメソッドがあることだけでした。

- (void) makeKeyWindow {
  AppDelegate * appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
  [appDelegate.window makeKeyAndVisible];
}

フォーカスされる独自のUIWindowがない場合、これがどのように機能するかはわかりませんが、最悪の場合、フォーカスを受け取るダミーのUIWindowを追加し、上からまったく同じコードを追加することができます。

于 2012-12-21T00:29:28.800 に答える
1

エラー メッセージは遷移を開始することを示唆していますが、対応する end メソッドの呼び出しがありません。

  • アニメーションなしでトランジションを試してみましたか? ( animated: NO)

  • この動作は、switch ステートメントを使用し、break;

  • シークを実行している場合は、-viewDidAppear代わりに実行してください-viewWillAppear

少し役に立てば幸いです!:)

于 2012-10-23T00:32:25.743 に答える