如何在其他文本字段出现弹出框时关闭已打开的键盘 ios

How to dismiss already opened keyboard when popover appears by other textfield ios

在我的 iOS 项目中,我有一个包含各种文本字段的表单。一些文本字段由键盘编辑,一些文本字段由放置在弹出窗口上的选择器视图编辑。

当我继续填充文本字段时,没有关闭它,然后如果我单击弹出窗口文本字段键盘保持打开状态。

键盘和弹出框同时出现在屏幕上,这是我不想要的。

我可以通过在键盘通知方法中设置标志以及通过文本字段委托编辑的最后一个文本字段来了解键盘是否打开。并尝试过

  1. [self endEditing: YES];(因为它在 table 单元格中)

  2. [lastEditedTextField resignFirstResponder];

我什至尝试通过键盘关闭通知(不知道是否可能)

  1. [[NSNotificationCenter defaultCenter] postNotificationName:UIKeyboardWillHideNotification object:nil];

但没有任何效果。

如何在弹出窗口出现时关闭键盘(如果已经打开)?

您可以拨打:

[self.view endEditing:YES];

但是,更好的解决方案可能是使用 UIResponder inputView 显示选择器,这样它会自动替换键盘,您不需要在 2 个不同的事物(和用户)之间进行调解可能不会在屏幕的不同部分之间切换)。

尝试实现 textFieldShouldBeginEditing: 并在其中检查这是哪个文本字段。如果它是应该显示弹出窗口的字段之一,首先调用 [self.view endEditing:YES] 隐藏键盘,然后显示弹出窗口和 return NO。这样,文本字段就不会成为第一响应者,键盘也不会再次出现。如果它是 "normal" 文本字段之一,则只需 return YES.