美文网首页
iOS小问题之 SearchBar收回键盘后点击取消按钮没反应

iOS小问题之 SearchBar收回键盘后点击取消按钮没反应

作者: 盛夏凉风 | 来源:发表于2017-08-29 22:35 被阅读43次

    页面最上面加一个SearchBar下面再来一个列表是很常见的设计,但自己在实现这种设计的时候出现一个问题。
    如图,键盘收起来之后,cancelButton的颜色变灰,点击按钮键盘会重新弹起来,再按一下searchBar才会取消搜索状态。可是正常情况应该是无论什么时候点击cancelButton searchBar也要马上取消搜索状态。

    首先如果你用Textfield和Button自定义控件的话就不会出现这个问题,但你又想省时用searchBar的话就要把cancelButton的响应状态改变。

    cancelButton属性不能直接被调用,所以首先用NSLog(@"path = %@", [path performSelector:@selector(_methodDescription)]) 或者runtime打印出searchBar所有属性,发现里面确实有_cancelButton这个属性,接下来我们就可以用KVC用获取和改变它了

    if let button = searchBar.value(forKey: "_cancelButton")as? UIButton
            {
                button.alpha = 1
                button.setTitleColor(kRGBA(17, g: 17, b: 17, a: 1), for: .normal)
                button.isUserInteractionEnabled = true
                button.isEnabled = true
                
                let view = searchBar.value(forKey: "_maskView")as? UIView
                view?.removeFromSuperview()
                
            }
    

    将_cancelButton的isUserInteractionEnabled改成true,就可以一点击就取消搜索状态了

    相关文章

      网友评论

          本文标题:iOS小问题之 SearchBar收回键盘后点击取消按钮没反应

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