Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 有了UIPresentationFormSheet,为什么';当我的视图打开时,它不会移到键盘上方吗?_Ios_Modalviewcontroller - Fatal编程技术网

Ios 有了UIPresentationFormSheet,为什么';当我的视图打开时,它不会移到键盘上方吗?

Ios 有了UIPresentationFormSheet,为什么';当我的视图打开时,它不会移到键盘上方吗?,ios,modalviewcontroller,Ios,Modalviewcontroller,苹果说: UIModalPresentationFormSheet 显示视图的宽度和高度小于屏幕的宽度和高度,并且视图位于屏幕的中心如果设备处于横向且键盘可见,则视图的位置会向上调整,以使视图保持可见。所有未覆盖的区域都会变暗,以防止用户与它们交互 但当键盘可见时,我的视图不会向上移动。我基本上想在键盘上方显示一个文本视图,这样用户就可以输入文本,然后点击发送(在显示视图的导航栏按钮中) 我的演示视图是一个UISplitViewController(不是它的子对象),我演示的是UINavigat

苹果说:

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

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

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

在这种情况下,我发现了如何调整显示视图的大小,这很好,但我不想通过在演示者或显示视图中手动调整大小来进行假设。看起来它应该选择一个合适的(未记录的)尺寸,当键盘显示时,它会自动向上移动

我的演示代码如下所示:

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

当我结束我的问题时,我意识到我正在调用
成为第一响应者
,在
视图中的UITextView将出现
。如果您将其更改为
viewdide
它将工作,这是有意义的。

我还发现,如果我使用becomeFirstResponder,即使在viewdide中,我也会得到不希望的效果。例如,在横向模式下,模态视图的中心可能不正确。要避免此问题,请在dispatch_async()中调用becomeFirstResponder。