为什么不调用 searchBarTextDidEndEditing?
Why searchBarTextDidEndEditing not called?
我有这个代码:
extension VC : UISearchBarDelegate
{
func searchBarTextDidEndEditing(_ searchBar: UISearchBar) {
print("searchBarTextDidEndEditing")
}
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
// searchBar.resignFirstResponder()
}
}
searchBarCancelButtonClicked
在点击搜索时触发,但 searchBarTextDidEndEditing
直到我调用 searchBar.resignFirstResponder()
才触发
我看了很多关于这个的问题和答案,但我不明白为什么会这样,resignFirstResponder()
在这里做什么?
如 documents resignFirstResponder
中所述
Notifies this object that it has been asked to relinquish its status as first responder in its window.
基本上这个函数调用告诉你的输入字段它不应该从用户那里得到更多的输入或者这个输入字段的输入操作已经完成。因此你的 searchBarTextField
结束了它的编辑状态并且 searchBarTextDidEndEditing
被调用。
如果您想了解更多关于 firstResponder
是什么的信息,那么您可能需要查看此 part 文档。
这可能对像我这样想知道为什么类似的委托方法没有触发的人有用。检查您是否已设置所有适当的代表,例如:
searchController.searchResultsUpdater = self
searchController.searchBar.delegate = self
我有这个代码:
extension VC : UISearchBarDelegate
{
func searchBarTextDidEndEditing(_ searchBar: UISearchBar) {
print("searchBarTextDidEndEditing")
}
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
// searchBar.resignFirstResponder()
}
}
searchBarCancelButtonClicked
在点击搜索时触发,但 searchBarTextDidEndEditing
直到我调用 searchBar.resignFirstResponder()
我看了很多关于这个的问题和答案,但我不明白为什么会这样,resignFirstResponder()
在这里做什么?
如 documents resignFirstResponder
Notifies this object that it has been asked to relinquish its status as first responder in its window.
基本上这个函数调用告诉你的输入字段它不应该从用户那里得到更多的输入或者这个输入字段的输入操作已经完成。因此你的 searchBarTextField
结束了它的编辑状态并且 searchBarTextDidEndEditing
被调用。
如果您想了解更多关于 firstResponder
是什么的信息,那么您可能需要查看此 part 文档。
这可能对像我这样想知道为什么类似的委托方法没有触发的人有用。检查您是否已设置所有适当的代表,例如:
searchController.searchResultsUpdater = self
searchController.searchBar.delegate = self