UISearchBar问题小结

                    

最近项目中使用UISearchBar,在处理过程中遇到以下问题,查找资料解决后,分享给大家,方便以后遇到同样的问题得以很好的解决

1.项目中设计日夜间,所以需要给UISearchBar设置日夜间颜色,背景颜色都一样可以修改,主要是字体颜色,网上查到@"_searchField"该属性

  UITextField*searchField = [_searchbarvalueForKey:@"_searchField"];

  searchField.dk_textColorPicker=DKColorPickerWithRGB(0x000000,0x666666);

通过改属性,获得UITextField,然后改变searchField.text的颜色值

我遇到的问题是,我把UITextField*searchField = [_searchbarvalueForKey:@"_searchField"];写在[headview addSubview:_searchbar];后面,导致searchField=nil,所以如果你也需要UITextField属性,记得一定在UISearchBar添加在视图后

2.UISearchBar的取消按钮

这个问题比较诡异,但是网上有人给出了答案,由于我查的时候也是很久才找到,所以才想分享给大家

在如图1的情况下,UISearchBar“取消”按钮非高亮状态,点击取消后进入编辑状态如图2,断点调试发现进入- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar{ }方法,截图如下:


UISearchBar问题小结_第1张图片


UISearchBar问题小结_第2张图片

UISearchBar添加背景色,会发现取消按钮也在UISearchBar上面,所以点击它会触发开始编辑响应

,进入编辑状态后,取消按钮高亮,再次点击取消进入- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar{ }方法  

网上给出的解决方案:

1.是由于searchBar上有个手势,只要点击到searchbar就会触发手势使searchbar进入编辑模式,包括点击searchbar的边框,而取消按钮的大小距离searchbar的边框有八个像素的距离,因此手指点击的时候很容易会点击到searchbar边框上的像素,从而触发编辑事件,可以通过以下代码,去除该手势事件,就行了

for (UIGestureRecognizer *tap in _searchBar.gestureRecognizers) {

[_searchBar removeGestureRecognizer:tap];

}

我用的就是这个方法,问题得到了解决

2.这是因为此时取消按钮的enabled属性被设置为NO了,如果想保持可以点击,需要在搜索框失去焦点的地方设置一下,例如在search按钮的代理方法里面这样写

-(void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {

[searchBar resignFirstResponder]; //searchBar失去焦点

UIButton *cancelBtn = [searchBar valueForKey:@"cancelButton"]; //首先取出cancelBtn

cancelBtn.enabled = YES; //把enabled设置为yes

}

博客原文:http://blog.csdn.net/Yo_Yo_Yang/article/details/51395381(这貌似是解决其它问题的,我没有尝试)

########-----------------——#################

本次还遇到了1.UITableView的cell长按拖拽换位置,指定cell不能拖拽也不能被换    2.自定义UIPageControl任意一个圆圈用指定的图代替,切不会随着UIScrollView移动切换这个指定的图片,类似天气定位中的UIPageControl,如图:


UISearchBar问题小结_第3张图片


UISearchBar问题小结_第4张图片

希望对大家有帮助,至于后面的两个问题,后续分享具体代码,希望大家喜欢我的分享

你可能感兴趣的:(UISearchBar问题小结)