touchesBegan在静态tableView中没有被调用

时间:2015-11-17 08:56:24

标签: swift uitableview tableview touchesbegan

我在这里读过几篇关于同样问题的帖子,但是我不能理解它们主要是因为我在IOS开发方面很新,我使用swift。我甚至找不到术语定义"继承",也许它只是obj-c?

无论如何,我有一个带有静态单元格的tableview控制器,以及一个单元格中的文本字段。当用户在编辑文本字段时点击其他区域时,我需要关闭键盘。在这里阅读帖子后,我将touchesBegan内容改为:

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
        self.view.endEditing(true)
        self.nextResponder()?.touchesBegan(touches, withEvent: event)
        super.touchesBegan(touches, withEvent: event)
}

我仍然没有得到tableviewcontroller中的触摸,其定义为:

class addNew: UITableViewController, UITextFieldDelegate {

2 个答案:

答案 0 :(得分:1)

您可以在tableview上添加tapGestureRecognizer。 将tapGestureRecgonizer连接到函数/方法。 在该方法中,检查textfield是否是第一个响应者。如果是,则要求文本字段辞职第一响应者。

答案 1 :(得分:1)

我在Swift 4上有一个类似的问题,只是为了endEditing并用touchesBegan隐藏键盘。起初我找不到方法。

这两个步骤对我有用:

  1. 在表格视图中添加手势识别器:

    override func viewDidLoad() {
      super.viewDidLoad()
      tableView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(hideKeyboard)))
    } 
    
  2. 中以两种方式结束编辑
    @objc func hideKeyboard() {
      view.endEditing(true)  
      //textField.resignFirstResponder()  /* This line also worked fine for me */
    }
    
相关问题