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

页面最上面加一个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,就可以一点击就取消搜索状态了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容