4

ページスクロールビューがあります。各ページには、ボタンのグリッドを管理するビューコントローラー (buttonViewController) があります。ボタンの 1 つを押すと、buttonViewController は別のビューコントローラー (detailViewController) をモーダルにポップアップします。

問題は、モーダル ビュー コントローラーを閉じると、表示されている buttonViewController が約 20 ピクセル分下に移動することです。奇妙なことに、表示されているページだけがシフトされます。既に読み込まれている別のページにスクロールすると、正しい位置に表示されます。

私の質問は基本的に、modalViewController を閉じるとメインビューボタンが iphone の周りに移動するのと同じです

ただし、その質問に対する受け入れられた回答は、ステータスバーが非表示になっていることを前提としていました。アプリケーションのステータス バーを隠していません。

他のアイデアはありますか?

もう 1 つ注意: シフトは、モーダル ビュー コントローラーを初めて起動したときにのみ発生します。モーダル ビュー コントローラーを開いたり閉じたりし続けても、すべて同じままです。

もう 1 つ注意: 次のコードを追加すると:

    CGRect frame = self.view.frame;
frame.origin.y=0;
self.view.frame = frame;

モーダル ビュー コントローラーを閉じた後、問題を回避できます。フレームは y 方向に 20 ピクセル移動するように見えます。しかし、何が原因で動いているのかはまだわかりません。

4

2 に答える 2

1

さて、私はこの問題を抱えていましたが、それは私の最初のviewControllerが(UIWindowで)設定された方法が原因でした.これは以前に起こったことがないので非常に奇妙です.ポイント (0,0) ステータス バーとオーバーラップしますが、これは通常ではありません。通常、ビューはステータス バーを認識しており、適切に動作します。副作用として、ステータスバーを外すモーダルビューをプッシュすると、それを閉じた後、あなたが見ているのと同じ問題が見られました。私が修正したのは、UIWindows ビューを nib のコントローラー ビューに設定することでした。これですべてが修正されたようです。CGRectMake(0,0,320,460) を使用してプログラムでウィンドウに単純に追加すると、この奇妙な動作が発生した理由がわかりません。これまでのすべてのプロジェクトでこれを行っており、正しい動作を見たからです。しかし、ペン先にセットすると、期待どおりに機能しました。多分これはあなたの問題でもあります。

于 2009-07-28T18:20:06.243 に答える
0

これは以下に関連していることが判明しました: ページングされたscrollViewがスクロールされると、アニメーション中にModalViewControllerが表示されません

一部のビューコントローラーの高さが一致していなかったため、すべてが失敗していました。

一部のビューの高さは460ピクセルで、一部のビューの高さは480ピクセルでした。何らかの理由で、これにより、モーダルビューコントローラーが消えるたびに20ピクセルずつシフトしました。すべてを460ピクセルにすると、すべてがうまく機能しました。

于 2009-07-28T20:55:23.543 に答える