【问题标题】:searchBarTextDidBeginEditing not being called when i use it in navigation controller Swift 3.当我在导航控制器 Swift 3 中使用 searchBarTextDidBeginEditing 时,它没有被调用。
【发布时间】:2017-08-16 21:24:37
【问题描述】:

我已经搜索了几个小时试图解决我的问题,但我找不到任何解决方案。

我的问题是我的导航栏中有一个 SearchBar。我确实像这样设置了我的 SearchBar:

lazy var searchBar = UISearchBar(frame: CGRect.zero)

    override func viewDidLoad() {
        super.viewDidLoad()

        searchBar.delegate = self
        searchBar.placeholder = "Search"

        navigationItem.titleView = searchBar

    }

当我尝试从协议 UISearchBarDelegate 调用例如一个函数时,它不会响应。 函数例如:

func searchBarTextDidBeginEditing(searchBar: UISearchBar) {

        print("Did run")
    }

此函数不执行。我如何让 UISearchBarDelegate 中的函数在导航栏中以编程方式执行?我以编程方式执行此操作的原因是因为我使用导航栏中的搜索栏

【问题讨论】:

    标签: ios swift uisearchbar


    【解决方案1】:

    您的委托函数在参数上与正确的函数略有不同。应该是:

    func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) {
      //code
    }
    

    【讨论】:

    • 非常感谢,这个函数和我的函数有什么区别?
    • 委托的参数以_开头,而你的不是。你可以看到“几乎匹配可选要求”的警告,这意味着:“我认为你想要这个功能,但你输入的只是有点不同”
    • 是的,我得等 5 分钟
    猜你喜欢
    • 1970-01-01
    • 2017-03-03
    • 1970-01-01
    • 2016-11-02
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-01
    相关资源
    最近更新 更多