【问题标题】:KeyBoard gets locked after popover dismissal弹出窗口解除后键盘被锁定
【发布时间】:2015-09-26 06:03:06
【问题描述】:

视图控制器中有多个文本字段,其中一些是自定义的(点击这些文本字段将启动一个弹出控制器,用户可以从中选择将在点击的文本字段中显示的选项)。

我在视图控制器上有一个点击手势来关闭键盘(如果它在屏幕上)。

当我在点击自定义文本字段时打开弹出式控制器时,键盘被锁定(如果它是可见的)。即使我点击父视图或键盘中的关闭按钮,键盘也不会关闭。

我试过这 2 个 sn-ps 来隐藏键盘,但它不起作用

[self.scrollView endEditing:YES];
[[[UIApplication sharedApplication] keyWindow] endEditing:YES];

【问题讨论】:

  • 您可以访问活动输入字段吗?那么在该视图上调用 resignFirstResponder 可能是一个更好的主意。
  • 是的,我可以,但是获取活动字段没有用,因为它是自定义的(意味着它不会弹出键盘,只会显示弹出窗口)。
  • [文本域 resignFirstResponser];手动

标签: ios uipopovercontroller iphone-keypad


【解决方案1】:

您可以使用 textfields 委托来防止它显示键盘,而是通过实现此 textFieldShouldBeginEditing 方法自己显示弹出框

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
    if(textField == myCustomTextField) {
        [self openCustomPopover];
        return NO;
    }
    return YES;
}

更多关于它的委托方法在这里https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITextFieldDelegate_Protocol/index.html#//apple_ref/occ/intfm/UITextFieldDelegate/textFieldShouldBeginEditing

【讨论】:

  • 我认为你没有得到我的问题。实际上我的问题是如果我在键盘可见时打开和关闭弹出框,我的键盘在弹出框关闭后被锁定
  • 如果要显示弹出框然后决定哪个文本字段将是第一响应者,为什么还要打开键盘?
  • 我不会同时展示键盘和弹出框。在我的情况下,一些文本字段是自定义的,它们将打开弹出窗口,其中一些将打开通常的键盘。如果我点击文本字段(未自定义),则会出现键盘,然后如果我打开和关闭弹出框,我的键盘就会被锁定......
  • 它是标准的 UIPopover 吗?你只在 iPad 上这样做吗?你在 iPhone 上也有同样的行为吗?
  • 标准 UIPopover 我的应用仅适用于 iPad
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-04
  • 1970-01-01
  • 2018-03-08
  • 1970-01-01
相关资源
最近更新 更多