2011-10-28 26 views
2

苹果表示:使用UIPresentationFormSheet,为什么我的视图在键盘上方移动时不能移动?

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

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

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

我发现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

我还发现,如果我使用becomeFirstResponder即使在viewDidAppear中,我也会收到不良效果。例如,在横向模式下,模态视图将错误居中。为了避免这个问题,请在dispatch_async()中调用becomeFirstResponder。 – Hampden123