点击手势以使用TableView关闭UITextField

时间:2015-12-23 21:59:01

标签: ios iphone swift uitableview uigesturerecognizer

我有一个UITextField的视图,它在它下面的UITableView上执行一些搜索操作。

问题是,当我设置一个轻击手势以在UITextField外面的触摸上关闭键盘时,它似乎取消了我的TableView单元格的didSelect方法。

以下是我目前在viewDidLoad中使用的代码:

    let tapRecognizer = UITapGestureRecognizer(target: self, action: "handleSingleTap:")
    tapRecognizer.numberOfTapsRequired = 1
    self.view.addGestureRecognizer(tapRecognizer)

    func handleSingleTap(recognizer: UITapGestureRecognizer) {

    self.view.endEditing(true)

    }

如何设置它以便UITextField外部的触摸关闭键盘,但仍允许我选择TableView单元格?

4 个答案:

答案 0 :(得分:1)

无需添加任何手势来解除tableview上的键盘,iOS SDK本身提供了一个属性来解除名为 keyboardDismissMode 的键盘。我们可以从IB本身获取此属性,请查看下面的图像供您参考。

enter image description here

答案 1 :(得分:0)

您需要实现手势识别器委托。

func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer,shouldReceiveTouch touch: UITouch) -> Bool
{
    if ([touch.view isDescendantOfView:yourTableView]) {
        return false
    }
    return true
}

这样,它不会干扰您对表视图的触摸,仍然允许您选择表格视图。

答案 2 :(得分:0)

不鼓励使用轻敲手势。当它覆盖我的自定义按钮时,我遇到了这个问题。我用iOS XCDFormInputAccessoryView解决了这个问题。它对我很有用。

答案 3 :(得分:0)

cancelsTouchesInView的{​​{1}}属性设置为true。

UITapGestureRecognizer