通过触摸UITableViewController的背景隐藏键盘

通过触摸UITableViewController的背景隐藏键盘,uitableview,swift,Uitableview,Swift,要在触摸UITableViewController的背景时隐藏键盘。目前,我已经实现了在按下回车键的同时移除键盘,但在按下外部某个位置时仍然无法工作。我的代码: class SecondViewController: UITableViewController, UITextFieldDelegate { ... // Hide Keyboard while pressing return func textFieldShouldReturn(textField: UITextF

要在触摸UITableViewController的背景时隐藏键盘。目前,我已经实现了在按下回车键的同时移除键盘,但在按下外部某个位置时仍然无法工作。我的代码:

class SecondViewController: UITableViewController, UITextFieldDelegate {
...
    // Hide Keyboard while pressing return
    func textFieldShouldReturn(textField: UITextField) -> Bool {

        tb_Name.resignFirstResponder()
        tb_Description.resignFirstResponder()

        return true
    }

    // Hide Keyboard while pressing somewhere on the UI
    override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
        self.view.endEditing(true)
    }
}
奇怪的是,当我在“普通”视图控制器中添加这段代码时,它就可以正常工作了。在表视图控件中,不能使用


Thx.

您可以尝试在其上添加一个手势:

UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] 
initWithTarget:self action:@selector(hideKeyboard)]; 
tapGestureRecognizer.cancelsTouchesInView = NO; 
[self.tableView addGestureRecognizer:tapGestureRecognizer];

实际上有很多方法可以解决这个问题,这取决于你想要的行为。

这不是一种点击关闭的方法,但是如果你的目标是iOS 7及以上版本,你可以将tableView的
keyboardDismissMode
属性设置为OnDrag或Interactive以关闭键盘,并在tableView上进行交互<代码>tableView.keyboardDismissMode=UIScrollViewKeyboardDismissMode.OnDrag