【问题标题】:With UIPresentationFormSheet, why doesn't my view move above the keyboard when it is up?使用 UIPresentationFormSheet,为什么我的视图在键盘启动时没有移动到键盘上方?
【发布时间】:2011-12-17 11:17:22
【问题描述】:

苹果说:

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

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

我的呈现视图是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];

【问题讨论】:

    标签: ios modalviewcontroller


    【解决方案1】:

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

    【讨论】:

    • 我还发现,即使在 viewDidAppear 中使用 becomeFirstResponder,也会产生不良影响。例如,在横向模式下,模态视图会错误地居中。为了规避这个问题,在 dispatch_async() 中调用 becomeFirstResponder。
    猜你喜欢
    • 1970-01-01
    • 2021-04-03
    • 2018-05-21
    • 1970-01-01
    • 2013-11-08
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多