美文网首页
UISearchBar取消按钮一直可用方案

UISearchBar取消按钮一直可用方案

作者: 一声雷 | 来源:发表于2016-05-18 11:07 被阅读1115次

    现状:

    当 UISearchBar的搜索条失去焦点的时候,旁边的“取消”按钮就不能使用了。

    目标:

    当取消按钮的失去焦点的时候,依然能够让取消按钮可用。

    思路:

    遍历UISearchBar里面的所有子控件,拿到“取消按钮”,将其置为可用。

    为什么这里要用延时方法:

    因为可能UISearchBar在失去焦点的时候,将取消按钮置为不可用的时机比较晚,我要保证我的方法在系统的之后执行。

    代码实现:

    //代理方法1 
    func searchBarCancelButtonClicked(searchBar: UISearchBar) {
           // 取消按钮点击实现的功能。。。
            // 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        
                    // 设置取消按钮的颜色        
                    getBtn.setTitleColor(UIColor.orangeColor(), forState: UIControlState.Reserved) 
                    getBtn.setTitleColor(UIColor.orangeColor(), forState: UIControlState.Disabled)   
                }else{
                         for subView in view.subviews{
                         self.changeSearchBarCancelBtnTitleColor(subView)  
                       } 
                }       
        }
    

    相关文章

      网友评论

          本文标题:UISearchBar取消按钮一直可用方案

          本文链接:https://www.haomeiwen.com/subject/cthwrttx.html