iOS SDK:单击按钮时关闭键盘?

iOS SDK: Dismiss keyboard when a button gets clicked?

提问人:Daniel Mühlbachler-P. 提问时间:6/15/2011 更新时间:7/22/2016 访问量:8231

问:

当用户单击按钮时,如何关闭键盘? 为了更好地理解,一个简短的例子:用户在某些文本字段中编辑一些文本,最后他没有单击键盘上的“完成”或删除其他内容,而是在键盘仍然显示时单击“保存”按钮。那么,我现在该如何关闭键盘呢?

谢谢问候,丹尼尔

iOS 键盘 UIBUTTON 关闭

评论


答:

4赞 SriPriya 6/15/2011 #1

在按钮操作写入中,

if([textField isFirstResponder]){
  [textField resignFirstResponder];
}

如果有更多文本字段,则每次在开始编辑时获取当前文本字段引用,并在按钮操作中重新签名其响应程序。

评论

0赞 Daniel Mühlbachler-P. 6/15/2011
感谢!此外,我还想在用户点击屏幕时关闭键盘。我使用了: UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyBoard)];[self.view addGestureRecognizer:点击];但是按钮操作不起作用 - 也许按钮单击被识别为点击“空白屏幕”?
0赞 SriPriya 6/15/2011
@Daniel:视图是否包含任何滚动视图?
0赞 Daniel Mühlbachler-P. 6/15/2011
是的,还有 ScrollView 和 TextView。顺便说一句......是否可以制作一个 UIDscrollView,其中有两个 TextView,TextView 不应该能够独立滚动 - 而不是只滚动 UIDscrollView,以便其余的 TextView 可见/显示(所以,它们也会滚动)?
6赞 benzado 6/28/2013 #2

您还可以调用层次结构中文本字段上方的任何视图。如果您不确定哪个文本字段具有第一响应者状态,这将非常有用。它还可以选择允许文本字段委托停止操作(通过从 shouldEndEditing:返回 NO),如果您使用委托对字段进行验证,这很好。[view endEditing:YES]

0赞 Roland 12/5/2015 #3

除了 SriPriya 的回答之外,这里还有 Swift 2 风格的版本:

if numberTextField.isFirstResponder() {
    numberTextField.resignFirstResponder()
}

请享受...

1赞 KawaiKx 7/22/2016 #4

如果您有多个文本字段,并且不知道哪个是第一响应者(或者您根本无法从编写此代码的任何地方访问文本字段),则可以在包含文本字段的父视图上调用 endEditing:。

在 Swift 中,在相关的视图控制器中,将以下行添加到按钮函数中:

self.view endEditing(true)