[英]Make Cancel button in search bar active after search button tapped
我有搜索栏和取消按钮,点击搜索按钮后,显示结果但取消按钮无效,我需要点击两次才能使其工作并返回初始结果。 如何在搜索结果出现后激活取消按钮?
这是我的代码
func searchBarSearchButtonClicked(searchBar: UISearchBar) {
searchBar.endEditing(true)
searchBar.setShowsCancelButton(true, animated: true)
filterContentForSearchText(searchBar.text!, scope: "All")
print(searchBar.text)
}
func searchBarCancelButtonClicked(searchBar: UISearchBar) {
searchBar.text = ""
searchBar.resignFirstResponder()
searchBar.setShowsCancelButton(false, animated: true)
database = dataUtuh
self.collectionView.reloadData()
}
我已经在viewDidLoad上实现了UISearchBarDelegate
和searchBar.delegate = self
将代码设置为在搜索栏的searchBarSearchButtonClicked
委托方法中启用取消按钮这样,在单击搜索栏后,仍将启用取消按钮。
所以完整的代码片段将是
func searchBarSearchButtonClicked(searchBar: UISearchBar) {
searchBar.endEditing(true)
searchBar.setShowsCancelButton(true, animated: true)
print(searchBar.text)
for view in searchBar.subviews {
for subview in view.subviews {
if let button = subview as? UIButton {
button.enabled = true
}
}
}
}
快乐的编码......
根据我的经验,如果你执行searchBar.endEditing(true)
那么取消按钮被禁用,尝试在此之后添加它以查看它是否正常工作,我也在我的项目中使用它:
func enableCancelButton (searchBar : UISearchBar) {
for view1 in searchBar.subviews {
for view2 in view1.subviews {
if view2.isKindOfClass(UIButton) {
let button = view2 as! UIButton
button.enabled = true
button.userInteractionEnabled = true
}
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.