現(xiàn)狀:
當(dāng) UISearchBar的搜索條失去焦點(diǎn)的時(shí)候蔚万,旁邊的“取消”按鈕就不能使用了法绵。
目標(biāo):
當(dāng)取消按鈕的失去焦點(diǎn)的時(shí)候佩抹,依然能夠讓取消按鈕可用。
思路:
遍歷UISearchBar里面的所有子控件帖世,拿到“取消按鈕”休蟹,將其置為可用。
為什么這里要用延時(shí)方法:
因?yàn)榭赡躑ISearchBar在失去焦點(diǎn)的時(shí)候,將取消按鈕置為不可用的時(shí)機(jī)比較晚赂弓,我要保證我的方法在系統(tǒng)的之后執(zhí)行绑榴。
代碼實(shí)現(xiàn):
//代理方法1
func searchBarCancelButtonClicked(searchBar: UISearchBar) {
// 取消按鈕點(diǎn)擊實(shí)現(xiàn)的功能。盈魁。翔怎。
// self.dismissViewControllerAnimated(true,completion: nil)
}
// 代理方法2
func searchBarTextDidEndEditing(searchBar: UISearchBar) {
let time: NSTimeInterval = 0.2
let delay = dispatch_time(DISPATCH_TIME_NOW, Int64(time * Double(NSEC_PER_SEC)))
dispatch_after(delay, dispatch_get_main_queue()) {
print("0.2 秒后輸出")
self.searchBarResignAndChangeUI(searchBar)
}
}
// 讓按鈕可用
func searchBarResignAndChangeUI(searchBar: UISearchBar){
searchBar.resignFirstResponder()
self.changeSearchBarCancelBtnTitleColor(searchBar)
}
// 遍歷UISearchBar的所有子控件,將其置為可用
func changeSearchBarCancelBtnTitleColor(view:UIView){
if view.isKindOfClass(UIButton){
let getBtn = view as! UIButton
getBtn.enabled = true
getBtn.userInteractionEnabled = true
// 設(shè)置取消按鈕的顏色
getBtn.setTitleColor(UIColor.orangeColor(), forState: UIControlState.Reserved)
getBtn.setTitleColor(UIColor.orangeColor(), forState: UIControlState.Disabled)
}else{
for subView in view.subviews{
self.changeSearchBarCancelBtnTitleColor(subView)
}
}
}