我有相当多的控件分散在我的表格中的许多表格单元格中,我想知道是否有一种更简单的方法来消除键盘,而不必循环遍历所有的控件并将它们全部辞职为第一响应器。我想问题是…我如何得到当前的第一个响应器的键盘?


当前回答

你必须使用其中一种方法,

[self.view endEditing:YES];

or

[self.textField resignFirstResponder];

其他回答

您可以使用[view ended:YES]强制当前正在编辑的视图放弃其第一响应器状态。这样就隐藏了键盘。

与-[UIResponder resignFirstResponder]不同,-[UIView enditing:]将通过子视图搜索当前的第一响应器。所以你可以把它发送到顶层视图(比如self)。UIViewController中的view)它会做正确的事情。

(这个答案之前包含了几个其他的解决方案,它们也可以工作,但比必要的更复杂。为了避免混淆,我把它们去掉了。)

从UITableView和UIScrollView中取消键盘的最好方法是:

tableView.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag

在swift 3中,您可以执行以下操作

UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)

我们很快就能做到

UIApplication.sharedApplication().sendAction("resignFirstResponder", to: nil, from: nil, forEvent: nil)

你应该发送enditing:到工作窗口作为UIView的子类

[[UIApplication sharedApplication].windows.firstObject endEditing:NO];