Swift:shouldReceiveTouch没有被调用

时间:2015-04-16 08:37:09

标签: ios iphone uitableview swift uigesturerecognizer

我有一个要搜索的文本字段,其中包含自动填充列表(UITableView)以显示结果。我想在用户在文本字段外点击时关闭键盘,这是有效的;但它打破了我的表交互(用户可以点击其中一个结果来添加记录)。

我已尝试使用shouldReceiveTouch UIGestureRecognizersource1source2),但函数未被调用。我有

  • UIGestureRecognizerDelegate添加到ViewController.swift,如下所示:

    class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate,UIGestureRecognizerDelegate {...}

  • UITapGestureRecognizer对象添加到情节提要中并将其链接到我的视图

  • 添加IBAction功能以关闭键盘并将其链接到UITapGestureRecognizer对象:

    @IBAction func endEditing(sender: AnyObject) {
        addButton.hidden = true
        autocompleteList.hidden = true
        self.view.endEditing(true)
    }
    
  • 被叫shouldReceiveTouch

    func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool {
        println("in shouldReceiveTouch")
        gestureRecognizer.delegate = self
         if (touch.view == autocompleteList){
            println("touching autocomplete list")
            return false
        }
        else{
            println("touching elsewhere")
            return true
        }
    }
    

运行应用程序后,我了解到shouldReceiveTouch永远不会从控制台调用,所以我的猜测是我没有正确设置代理;我一直在这里和那里看了几个小时,但仍然没有运气。其他实现相同目标的解决方案也是受欢迎的。任何帮助表示赞赏!感谢

0 个答案:

没有答案