2011-10-28 11 views
2

Appleが言う:UIPresentationFormSheetを使用して、私のビューがキーボードの上に移動していないのはなぜですか?

UIModalPresentationFormSheet 提示ビューの幅と高さは、画面のものより小さく、ビューが画面の中央に配置されます。 デバイスが横向きで、キーボードが表示されている場合は、ビューの位置が上方に調整され、ビューが引き続き表示されます。すべてのカバーされていない領域は、ユーザーが相互作用しないように淡色表示されます。

しかし、キーボードが表示されても私のビューは上に移動しません。

私の提示しているビューは、UISplitViewController(その子供の1人ではありません)です。私は、テキストビューをキーボードの上にモーダルに表示したいので、テキストを入力して送信ボタンを押してください。私はUITextViewのトップビューコントローラーを持っているUINavigationControllerを提示しています。回転は機能しますが、提示されたビューは両方の向きでキーボードによってオーバーラップされます。

私は素敵である、この場合に提示ビューのサイズを変更する方法somequestionsasking見つけましたが、私はプレゼンターまたは提示ビューで手動でリサイズによって仮定を作るために持っている必要はありません。まともな(文書化されていない)サイズを選ぶだけで、キーボードが表示されたら自動的にそれを動かすように思えます。

私の提示のコードは次のようになります。私は私の質問を終えたので

MyViewController *vc = [[MyViewController alloc] init]; 
UINavigationController *nav = [[[UINavigationController alloc] initWithRootViewController:vc] autorelease]; 
nav.modalPresentationStyle = UIModalPresentationFormSheet; 
[self.splitViewController presentModalViewController:nav animated:YES]; 

答えて

3

、私はviewWillAppearの私UITextViewにbecomeFirstResponderを呼んでいたが実現しました。 viewDidAppearに変更するとうまくいくはずです。

+4

viewDidAppearでもbecomeFirstResponderを使用すると、私は望ましくない効果が得られることが分かりました。たとえば、ランドスケープモードでは、モーダルビューが正しく配置されません。この問題を回避するには、dispatch_async()内のbecomeFirstResponderを呼び出します。 – Hampden123

関連する問題