为什么没有调用 searchBarTextDidEndEditing ?

Sae*_*iry 0 cocoa-touch uisearchbardelegate ios swift

我有这个代码:

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

    func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
        // searchBar.resignFirstResponder()
    }
}
Run Code Online (Sandbox Code Playgroud)

searchBarCancelButtonClicked单击搜索时已触发,但searchBarTextDidEndEditing直到我打电话才触发 searchBar.resignFirstResponder()

我读了很多关于此的问题和答案,但我不明白为什么会发生这种情况,以及resignFirstResponder()这里做什么?

Aya*_*mon 5

正如文件中所述 resignFirstResponder

通知此对象已被要求放弃其窗口中第一响应者的状态。

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

如果您想了解有关 afirstResponder是什么的更多信息,那么您可能需要查看文档的这一部分。