美文网首页
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