1

iOS 7 に移植している既存の iOS アプリがあります。iPad バージョンではUINavigationControllerUIPopoverController. 初期View Controllerの表示は正常に動作します。アニメーション = YES で別のビュー コントローラーを押すとpushViewController:animated、新しいコントローラーが期待どおりに右からアニメーション化され、上にフリックされたかのように動作し、元の位置に戻ります。同時に、ポップオーバー コントローラーが少し大きくなります。

アニメーションをオフにしても、サイズ変更はできますが、バウンスはできません。しかし、新しいView Controllerのプレゼンテーションのアニメーションも得られません。

この時点で、私は手がかりを探しています。コードを投稿したいと思いますが、これはすべて iPhone と iPad で実行され、ビュー コントローラーを新しいナビゲーション コントローラーに表示する必要があるかどうか、およびそのナビゲーション コントローラーをポップオーバー コントローラーに表示する必要があるかどうかを自動的に検出するため、複雑です。複雑にするのではなく、問題を追跡できるように、なぜこれが発生するのかについてのアイデアを探しています。

iOS 5 および 6 では、同じコードが問題なく動作します。

誰かが iOS 7 でこれを成功させているかどうかを知ることは興味深いでしょう -この動作を見ずUINavigationControllerに aを単に提示し、 UIPopoverControllerView Controller をプッシュするだけです。

4

3 に答える 3

3

問題は次のようになりますcontentSizeForViewInPopover

私たちのUINavigationControllerサブクラスは、このメソッドを実装して、含まれているもののUIPopoverController大きさを伝えます。7 より前の iOS のすべてのバージョンで文書化されているように絶対的に動作します。7 で廃止されるだけでなく、上記の問題を引き起こします。

popoverController.contentViewController.view.bounds.size解決策は、ビューを処理するためにポップオーバーのサイズを変更するのではなく、iOS 7に戻ってすべてのビューをやり直し、ポップオーバーに収まるようにすることです。

もう 1 つの解決策は、ナビゲーション コントローラーを取り除き、単純にポップオーバー コントローラーを閉じて、新しいサイズで新しいコントローラーを再表示することです。

読んでくれてありがとう。いつか、誰かが答えられるような質問をしようと思います。

于 2013-09-27T21:27:58.783 に答える
0

contentSizeForViewInPopover は、Craig が述べたように、iOS 7 で廃止されました。
  popoverContentSizeUIPopoverController のプロパティ。このプロパティは、 UIPopoverController の contentViewController プロパティでビュー コントローラによって管理されるコンテンツ ビューのサイズを表します。 参照

于 2014-01-07T23:48:33.330 に答える