当用户仅点击UITableView的某些区域时,需要关闭出现的键盘

时间:2017-11-22 20:00:26

标签: ios swift uitableview

我有一个项目,我有一个带有三个不同单元格的UITableView,以及两个部分:第0部分包含一个包含UILabel的单元格,第1部分包含两个单元格,每个单元格包含一个UITextField。当用户从第二部分中的任一单元格中选择UITextField时,将出现键盘。这可以。但是,我想要做的是当用户按下第0部分中的单元格(也将用户带到另一个屏幕),按下UITableView的footerView或完全在UITableView之外时关闭键盘。我现在的问题是我能够解除键盘,但是第一个单元格不会根据需要将用户带到下一个屏幕。这是我的代码:

    func hideKeyboard() {
        let tap: UITapGestureRecognizer = UITapGestureRecognizer(
            target: self,
            action: #selector(MyViewController.dismissKeyboard))

        view.addGestureRecognizer(tap)
    }

    @objc func dismissKeyboard() {
        view.endEditing(true)
    }

此方法从viewDidLoad()调用为self.hideKeyboard()。我意识到在我的代码中,我将tapGesture分配给父视图,该视图禁用UITableView上的点击手势,但我想知道如何解决这个问题以实现我上面提到的所需解决方案?

1 个答案:

答案 0 :(得分:0)

所以你想根据3个不同区域的点击来解雇键盘。

  1. 第0部分中的任何一个单元格:子类UITableViewCell并创建自定义单元格(如果您还没有)。然后,将UITapGestureRecognizer添加到自定义单元格的contentView以关闭键盘。
  2. tableView的页脚视图:再次,在此自定义页脚视图中添加一个点按手势识别器。
  3. 完全在UITableView之外:如果你真的是指任何UITableView中没有的区域,那么创建一个UIView,将其添加到你的视图控制器并使用{ {1}}在表格视图后面发送此自定义视图。然后,再次添加轻击手势识别器以关闭键盘。
相关问题