我在导航控制器内实现了一个搜索栏,它工作正常,但取消按钮点击委托方法没有被调用。请帮忙:
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
//This function is not being called
}
let searchBarCnt = UISearchController(searchResultsController: nil)
navigationItem.searchController = searchBarCnt
navigationItem.hidesSearchBarWhenScrolling = true
self.navigationController?.view.backgroundColor = UIColor.white
searchBarCnt.delegate = self
searchBarCnt.searchBar.delegate = self
函数委托未被调用,因为您缺少definesPresentationContext
:
确定哪个父视图控制器的视图应该呈现在类型的呈现上
UIModalPresentationCurrentContext。如果没有祖先视图控制器设置了此标志,则演示者
将是根视图控制器。
您可以通过以下方式启用此类标志:
import UIKit
class ViewController: UIViewController, UISearchBarDelegate {
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.searchController = UISearchController(searchResultsController: nil)
self.navigationItem.searchController?.searchBar.delegate = self
self.definesPresentationContext = true
}
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
print("searchBarCancelButtonClicked")
}
}
Note:
没有definesPresentationContext
,您并没有真正触摸取消按钮(当您尝试触摸它时),您只是忽略了上下文(您可能会注意到背景焦点中的“无声”故障),例如
弹出窗口被取消。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)