0

わかりました、これは奇妙なもので、新しいプロジェクトで簡単に再現できます。

セットアップは次
のとおりです。UISplitViewControllerがあります。左側にはUITabBarControllerがあります。このタブバーコントローラーには、2つのUINavigationControllerがあります。ナビゲーションコントローラーには、UITableViewControllersがあります。これらのテーブルビューには検索バーがあります。

わかりました。この設定で何が起こるかというと、ポートレートモードでポップオーバーにこのビューを表示し、テーブルビューの1つで検索を開始してキャンセルすると、ナビゲーションバーが応答しなくなります。つまり、「戻る」ボタンと右側のボタンはクリックできません。

ポップオーバーにならないようにランドスケープモードでまったく同じことをした場合、これは起こりません。ナビゲーションバーは応答性を維持します。

したがって、問題はポップオーバー内でのみ発生するようです。

また、検索を行っても検索結果の項目をクリックすると、分割ビューの「詳細ビュー」に何かが読み込まれ、ポップオーバーが閉じられてから、ポップオーバーに戻ってクリックすることに気付きました。検索の[キャンセル]ボタンをクリックすると、ナビゲーションバーが応答します。

私のアプリケーションはユニバーサルアプリであり、iPhoneインターフェイスで同じタブバーコントローラーを使用しており、この問題なく動作します。


前述したように、これは新しいプロジェクトで簡単に再現できます。自分で試してみたい場合の手順は次のとおりです。

  • 新しいプロジェクトを開始します-分割ビュー

  • 新しいUITableViewControllerクラスを作成します(私はTableViewControllerという名前です)

    • viewDidLoadメソッドとviewDidLoadのrightBarButtonItem行のコメントを解除します(ナビゲーションバーに[編集]ボタンが表示されます)。

    • numberOfSectioinsInTableViewメソッドとnumberOfRowsInSectionメソッドから返す値を入力します

  • MainWindow.xibを開き、次の手順を実行します。

    • アイテムの内容を拡張できるように、中央の「表示モード」でxibを表示する必要があることに注意してください。

    • タブバーコントローラーをxibにドラッグして、ナビゲーションコントローラーアイテムを置き換えます

    • ナビゲーションコントローラーをタブバーコントローラーの下の別のアイテムとしてxibにドラッグします

    • タブバーコントローラーの下にある他の2つのビューコントローラーを削除します(つまり、タブバーには1つのナビゲーションコントローラーしかありません)

    • ナビゲーションコントローラー内で、テーブルビューコントローラーをドラッグし、それを使用してビューコントローラー(ルートビューコントローラー)を置き換えます。

    • 新しいTableViewControllerのクラスを上記で作成したクラスに変更します(私にとってはTableViewController)

    • 新しいテーブルビューコントローラの下にあるテーブルビューをダブルクリックして開きます(分割ビューコントローラ内のタブバーに表示されます)

    • 「検索バーと検索表示」をテーブルビューにドラッグします

    • xibを保存します

    • シミュレータでプロジェクトを実行する

      • ポートレートモードで、ルートリストボタンをクリックしてポップオーバーを表示します

      • [編集]ボタンをクリックできることに注意してください

      • 検索ボックスをクリックします-検索モードに入ります

      • [キャンセル]ボタンをクリックして、検索モードを終了します

      • [編集]ボタンが機能しなくなったことに注意してください


だから、誰かが私がこれが起こっている理由を理解するのを手伝ってくれる?

ありがとう、

マーク

4

2 に答える 2

0

OK、AppleDeveloperテクニカルサポートから回答を得ました。彼らはそれを調査し、それがUIPopoverControllerのバグであることを発見しました。彼は私にその種の回避策を教えてくれましたが、検索をキャンセルした後、ナビゲーションバーの右ボタンが画面上をスライドしてしまいます。しかし、少なくともそれは問題を修正します。彼はまた、私がバグレポートをAppleに送ることを提案し、私もそれを行った。うまくいけば、SDKの次のバージョンでこれを修正するでしょう。

これは、Appleエンジニアの回答の関連部分のコピーです。

私は自分のプロジェクトを作成し、何が起こっているのかを理解しました。これはUIPopoverControllerのバグのようで、UISearchBarが閉じられた後、ナビゲーションバーで何かが妨げられています。

今のところ私が見つけた回避策がありますが、発生するアニメーションは驚くほど最適ではありません。-UISearchBarDelegateの– searchBarCancelButtonClicked:メソッドを使用して、以下を追加します。

self.navigationItem.rightBarButtonItem = nil;
self.navigationItem.rightBarButtonItem = self.editButtonItem;

私が言ったように、ポップオーバーがナビゲーションバーにボタンを押しているように見えるので、それはあなたが探しているものではないかもしれません。

于 2010-08-12T14:42:51.840 に答える
0

前述の rightBarItem 手法を試しましたが、うまくいきませんでした。私はこれをしなければなりませんでした(これも本当にハックです)

[self.navigationController setNavigationBarHidden:YES animated:NO];
[self.navigationController setNavigationBarHidden:NO animated:NO];

これは、私の UINavigationBar がポップオーバーと統合されていないためかもしれませんが、確かなことは言えません。

于 2011-01-04T00:48:57.970 に答える