使用UIPresentationFormSheet,为什么我的视图在键盘启动时不会移动到键盘上方?

时间:2011-10-28 17:20:05

标签: ios modalviewcontroller

Apple说:

  

UIModalPresentationFormSheet   呈现视图的宽度和高度小于屏幕的宽度和高度,视图以屏幕为中心。 如果设备处于横向方向且键盘可见,则向上调整视图的位置以使视图保持可见。所有未覆盖的区域都将变暗以防止用户与其进行交互。

但是当键盘可见时,我的视图不会向上移动。我基本上想要在键盘上方以模态方式呈现textview,以便用户可以输入文本,然后点击发送(在显示的视图上的导航栏按钮。)

我的呈现视图是UISplitViewController(不是其中一个孩子),我正在呈现UINavigationController,其顶视图控制器基本上是UITextView。旋转有效,但所呈现的视图在两个方向上都被键盘重叠。

我发现some questions asking如何在这种情况下调整呈现视图的大小,这很好,但我不想通过手动调整大小来做出假设。演示者或在呈现的视图中。看起来它应该只选择一个体面的(未记录的)大小,只需在键盘显示时自动将其移动。

我的呈现代码如下:

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

1 个答案:

答案 0 :(得分:3)

当我完成我的问题时,我意识到我在becomeFirstResponder的UITextView上调用了viewWillAppear。如果将其更改为viewDidAppear,它将起作用,这是有道理的。