如图,当UISearchBar失去焦点的时候,取消按钮无法响应点击。只需要在失去焦点后,将取消按钮的enabled设置为YES即可。一般写在代理的searchBarSearchButtonClicked方法里。
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {
[searchBar resignFirstResponder];
UIButton *cancelBtn = [searchBar valueForKey:@"cancelButton"];
cancelBtn.enabled = YES;
}
显然,有个问题,如何知道私有属性名的呢?这里请参考《利用runtime获取私有属性名及类型》。
除了使用kvc,还可以遍历UISearchBar子控件,但是这里需要使用递归的方法遍历子控件,才能找到cancelBtn。