如何在键盘处于活动状态时显示UIAlertController操作表?

时间:2014-11-06 22:48:35

标签: ios8 uialertcontroller

我从UIViewController中提供UIAlertController动作表:

UIAlertController sheet = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleActionSheet];
[self presentViewController:sheet animated:YES completion:nil];

这在大多数情况下都可以正常工作。除非我有键盘,否则表格会出现在键盘后面。这是预期的行为吗?是否还有其他参数需要指定或从其他地方展示?

2 个答案:

答案 0 :(得分:1)

由于文档说UIAlertControllerStyleActionSheet的警报控制器在当前上下文中显示,因此它似乎是预期的行为。考虑到键盘位于另一个窗口中,它不与呈现视图控制器共享上下文。

出于我的项目的目的,我决定回到旧的UIActionSheet,它在键盘上显示没问题。但是,如果有关于UIAlertController的建议,请随时发布。

答案 1 :(得分:1)

问题不再可再生。可能它由fixed修复或需要特殊的视图控制器层次结构。如果我们假设在某些情况下仍可以复制此问题,我可以建议:

  1. 通过调用视图等于UIAlertController的{​​{1}}或可编辑视图(例如UIView.endEditing(true)

    UIViewConroller.view时隐藏键盘>
  2. 在解除UITextView之后显示键盘,如果之前显示过键盘,请致电UIAlertController,在第一步查看视图

  3. 我们可以尝试以更一般的方式执行这些步骤,例如创建扩展或子类化UIView.becomeFirstResponder()。但我相信我们不应该过分复杂化事情