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



苹果公司说:

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

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

我的呈现视图是UISplitViewController(不是它的子视图之一),我呈现的是UINavigationController,它的顶视图控制器基本上是UITextView。旋转可以工作,但是呈现的视图在两个方向上都被键盘重叠。

我发现了一些问题,询问如何在这种情况下调整所呈现的视图的大小,这很好,但我不想通过在演示者或所呈现的视图中手动调整大小来做出假设。似乎它应该选择一个合适的(未记录的)大小,只要在键盘显示时自动移动它。

我的呈现代码是这样的:

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

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

最新更新