在我的iOS项目中,我有一个包含各种文本字段的表单。一些文本字段由键盘编辑,一些文本字段由弹出窗口上的选择器视图编辑。
当我继续填写文本字段而不解除它时,如果我点击弹出文本字段键盘仍然打开。
键盘和弹出窗口同时出现在屏幕上,这是我不想要的。
我可以通过在键盘通知方法中设置标志以及通过文本字段委托编辑的最后一个文本字段来判断键盘是否打开。并尝试过
[self endEditing: YES];
(因为它位于表格单元格中)
[lastEditedTextField resignFirstResponder];
即使尝试通过键盘也会自行解除通知(不知道是否可能)
[[NSNotificationCenter defaultCenter] postNotificationName:UIKeyboardWillHideNotification object:nil];
但没有任何效果。
每当出现弹出窗口时,如何解除键盘(如果已经打开)?
答案 0 :(得分:2)
您可以致电:
[self.view endEditing:YES];
但是,更好的解决方案可能会使用UIResponder
inputView
来呈现选择器,因此它会自动替换键盘,而您无需在两个不同的事物之间进行调解(并且用户不会' t可能在屏幕的不同部分之间切换。
答案 1 :(得分:0)
尝试实施textFieldShouldBeginEditing:
并在其中检查哪个文本字段。如果它是应显示弹出窗口的字段之一,请先调用[self.view endEditing:YES]
隐藏键盘,然后显示弹出窗口并返回NO
。这样,文本字段不会采取第一响应者状态,键盘将不再出现。如果它是"正常"文本字段,只需返回YES
。