Ios 在不调用DidSelectRowatineXpath的情况下释放丢失的键盘

Ios 在不调用DidSelectRowatineXpath的情况下释放丢失的键盘,ios,swift,uitableview,keyboard,uitapgesturerecognizer,Ios,Swift,Uitableview,Keyboard,Uitapgesturerecognizer,我有一个ViewController,它有textSearchTableView:UITableView和搜索栏:UISearchBar 我添加了uitappesturerecognizer来解除键盘的锁定 override func viewDidLoad() { // ... self.tap = UITapGestureRecognizer(target: self, action: "DissmissKeyboard") self.tap.delegate = sel

我有一个
ViewController
,它有textSearchTableView:
UITableView
和搜索栏:
UISearchBar

我添加了
uitappesturerecognizer
来解除键盘的锁定

override func viewDidLoad() {

// ...

self.tap = UITapGestureRecognizer(target: self, action: "DissmissKeyboard")
        self.tap.delegate = self
        self.view.addGestureRecognizer(self.tap)
// ...

}

func DissmissKeyboard()
    {
        view.endEditing(true)
    }
我添加了此功能以防止在选择单元格后中断(DidSelectRowatineXpath)功能

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool {
        if touch.view.isDescendantOfView(self.textSearchTableView) {
        return false
        }
        return true
    }
但问题是:当键盘被启用时,我想错过它

如果我单击文本搜索表视图,(didSelectRowAtIndexPath)将运行

如果我不调用(didSelectRowAtIndexPath)而单击
表格视图
,我怎么会错过键盘?我也不想破坏这个函数

我希望我能很好地描述这个问题
非常感谢

让tableview的委托返回nil怎么样

- (NSIndexPath *)tableView:(UITableView *)tableView
willSelectRowAtIndexPath:(NSIndexPath *)indexPath

由于
将选择RowatineXpath
可能是您想要的,但不是您要求的:为了回答实际问题,可以通过发送第一响应者
辞职第一响应者来解除键盘。

重新编写您的
DidSelectRowatineXpath

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

    if (self.searchBar.isFirstResponder())
    {
        self.searchBar.resignFirstResponder()
    }
    else
    {
        //Do something here
    }
}
或者:我们通常在TableView中使用这种方法

self.tableView.keyboardDismissMode = .OnDrag

当在tableview中开始拖动时,这将关闭键盘。

在您的情况下,如果用户单击屏幕上的任何位置,关闭键盘是个坏主意。用户会在哪里单击?它必须是表中的一行,因此是您的问题。我会在键盘上放置一个“完成”按钮,并将resiginFirstResponder附加到该按钮上。这个问题明确地询问如何在不调用
didSelectRowatineXpath
的情况下完成该操作。这有什么帮助吗?谢谢,它工作了,但当我关闭键盘时,单元格被选中,因此我将这一行添加到if子句tableView中。取消行索引路径(indexPath,动画:true),但它也会被选中,然后取消选中请检查更新的答案,并让我知道它是否有帮助。您可以在viewDidLoad中写入这一行。。我希望它能让你的用户界面更直观。