【问题标题】:Why searchBarTextDidEndEditing not called?为什么不调用 searchBarTextDidEndEditing?
【发布时间】:2020-03-28 23:46:41
【问题描述】:

我有这个代码:

extension VC : UISearchBarDelegate
{
    func searchBarTextDidEndEditing(_ searchBar: UISearchBar) {
        print("searchBarTextDidEndEditing")
    }

    func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
        // searchBar.resignFirstResponder()
    }
}

点击搜索时searchBarCancelButtonClicked 已触发,但searchBarTextDidEndEditing 直到我调用searchBar.resignFirstResponder() 后才触发

我阅读了很多关于此的问题和答案,但我不明白为什么会这样,resignFirstResponder() 在这里做什么?

【问题讨论】:

标签: ios swift cocoa-touch uisearchbardelegate


【解决方案1】:

这可能对像我这样想知道为什么类似的委托方法没有触发的人有用。检查您是否设置了所有适当的代表,例如:

    searchController.searchResultsUpdater = self
    searchController.searchBar.delegate = self

【讨论】:

    【解决方案2】:

    documentsresignFirstResponder中所述

    通知该对象它已被要求放弃其窗口中第一响应者的身份。

    基本上,此函数调用告诉您的输入字段它不应再从用户那里获得任何输入,或者该输入字段的输入操作已完成。因此,您的 searchBarTextField 结束了它的编辑状态,并调用了 searchBarTextDidEndEditing

    如果您想了解更多关于 firstResponder 是什么的信息,那么您可能需要查看文档中的 part

    【讨论】:

    • 谢谢,这就是我想要的
    猜你喜欢
    • 2016-07-15
    • 2019-03-18
    • 2011-05-04
    • 2019-11-04
    • 2016-10-27
    • 2018-05-24
    • 2013-08-12
    • 2022-01-16
    • 1970-01-01
    相关资源
    最近更新 更多