2011-08-23 7 views
9

ここでは抜けているものがあるはずです。私は顧客UIScrollViewController(DataController)によって制御されているUIScrollViewを開いています。ある時点で、ユーザからの入力が必要とされているので、私はDataControllerからモーダルのUIViewControllerを開きます。UIScrollViewの基礎となるモーダルビューの変更を解除する

ElementSelectController *viewController = [[ElementSelectController alloc] initWithNibName:@"ElementSelectController" bundle:nil]; 
viewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
viewController.theDelegate = self; 
[self presentModalViewController:viewController animated:YES]; 

、ユーザがモーダルビューの準備ができたら、それが再び却下されます。これは、DataControllerからも発生します。

[self dismissModalViewControllerAnimated:YES]; 

これはすべて正常に動作します。 しかし、モーダルビューがなくなると、基礎となるUIScrollViewがフルスクリーンにリサイズされ、位置(0,0)にスクロールされていることがわかります。これは、他の何もしないが、却下される単純なモーダルビューであっても当てはまります。 明らかに、私はUIScrollViewをモーダルビューが出現する前の状態と同じ状態にしておきたいと思います。

私が間違っていることは何ですか?

は、私は(setFrameでブレークポイントを介し:カスタムUIScrollViewのの)UIScrollViewの枠が設定されているスタックトレースをチェックし、から呼び出されたことが表示されます:経由で呼び出され

-[UITransitionView transition:fromView:toView:] 

、dismissModalViewControllerAnimated呼び出しからのvia。

+0

なぜそれが起こっているのか分かりませんが、モーダルが消えた後はいつでもUIScrollView contentOffsetを保存してリセットすることができます。 – NWCoder

+0

viewwillappearからあなたのコードのいくつかを表示してください... –

+0

ありがとう。それが私が現在回避策としてやっていることです。フレームとUIScrollViewのcontentOffsetを保存し、dismiss呼び出しの直後にそれらをリセットします。それはうまくいくようですが、ハックのように感じます。私はこれを処理する通常の方法が何であるか知りたいと思うでしょう。 – fishinear

答えて

1
-[UITransitionView transition:fromView:toView:] 

モーダルからビューへの移行は完全に正常です。これはアニメーションなどですが、あなたはそれが違いを生むかもしれないと思うなら、アニメーションでモーダルを試してみてください。

そうものはモーダルでは何もあなたの些細なテストのために呼ばれているが、でもLoadUnload適切な場合 、あなたのviewWillAppearを見てみましょうWillDisappearDidAppear...。 これらのメソッドにいくつかのログを記録して、どちらが呼び出されたかを確認してください。

また、これらのメソッドにカスタムコードがない、またはコントローラーがそれらをオーバーライドしていないと言っていますか?違いを生むことができます。

関連する問題