iOS组件之UISearchBar详解

引言 UISearchBar类实现一个文本字段控制基于文本的搜索,它是继承于UIView(有关UIView的介绍请到《iOS组件之UIView详解》)。控制输入文字,一个搜索按钮,书签按钮和取消按钮提供了一个文本字段。该对象的UISearchBar实际上并不执行任何搜查。您可以使用委托符合UISearchBarDelegate协议对象,实现这些输入文字和点击按钮的事件。

目录

1、基本属性和方法
2、iOS5新增
3、iOS7新增
4、UISearchBarDelegate协议(可选)

1、基本属性和方法

// 设置控件样式(默认UIBarStyleDefault)

UIBarStyle              barStyle;              

// 设置代理

id<UISearchBarDelegate> delegate;              

// 控件上面显示的文字

NSString               *text;                  

// 显示在顶部的单行文字,通常作为一个提示行

NSString               *prompt;                

// 半透明的提示文字,输入搜索内容会消失

NSString               *placeholder;           

// 是否在控件的右端显示一个书的按钮(没有文字的时候)

BOOL                    showsBookmarkButton;   

// 是否显示cancel按钮

BOOL                    showsCancelButton; 
- (void)setShowsCancelButton:(BOOL)showsCancelButton animated:(BOOL)animated;    

// 是否在控件的右端显示搜索结果按钮(没有文字的时候)

BOOL                    showsSearchResultsButton; 

// 搜索结果按钮是否被选中

BOOL searchResultsButtonSelected; 

// bar的颜色(具有渐变效果)

UIColor *tintColor;
UIColor *barTintColor(iOS7.0);

UISearchBarStyle searchBarStyle (iOS7.0);

// 指定控件是否会有透明效果

BOOL translucent;

// 设置在什么情况下自动大写(默认UITextAutocapitalizationTypeNone)

UITextAutocapitalizationType autocapitalizationType;  

// 对于文本对象自动校正风格 (默认UITextAutocorrectionTypeDefault)

UITextAutocorrectionType     autocorrectionType;      

// (默认UITextSpellCheckingTypeDefault)

UITextSpellCheckingType      spellCheckingType;       

// 键盘样式 (默认UIKeyboardTypeDefault)

UIKeyboardType               keyboardType;            

// 搜索栏下部的选择栏,数组里面的内容是按钮的标题

NSArray   *scopeButtonTitles;

// 搜索栏下部的选择栏按钮的个数

NSInteger  selectedScopeButtonIndex; 

// 控制搜索栏下部的选择栏是否显示出来

BOOL       showsScopeBar; 

// 提供一个遮盖视图

UIView *inputAccessoryView;

2、iOS5新增

// 设置背景图片

UIImage *backgroundImage;

// 设置scope的背景颜色

UIImage *scopeBarBackgroundImage;


- (void)setSearchFieldBackgroundImage:(UIImage *)backgroundImage forState:(UIControlState)state;
- (UIImage *)searchFieldBackgroundImageForState:(UIControlState)state;

// 设置某个状态下search的ico图片

- (void)setImage:(UIImage *)iconImage forSearchBarIcon:(UISearchBarIcon)icon state:(UIControlState)state;

// 获取某个状态下的ico图片

- (UIImage *)imageForSearchBarIcon:(UISearchBarIcon)icon state:(UIControlState)state;

// 设置某个状态下scopeBarButton的背景图片

- (void)setScopeBarButtonBackgroundImage:(UIImage *)backgroundImage forState:(UIControlState)state; 

// 获取某个状态下scopeBarButton的背景图片

- (UIImage *)scopeBarButtonBackgroundImageForState:(UIControlState)state;

//

- (void)setScopeBarButtonDividerImage:(UIImage *)dividerImage forLeftSegmentState:(UIControlState)leftState rightSegmentState:(UIControlState)rightState;
- (UIImage *)scopeBarButtonDividerImageForLeftSegmentState:(UIControlState)leftState rightSegmentState:(UIControlState)rightState;

//

- (void)setScopeBarButtonTitleTextAttributes:(NSDictionary *)attributes forState:(UIControlState)state;
- (NSDictionary *)scopeBarButtonTitleTextAttributesForState:(UIControlState)state;

//

UIOffset searchFieldBackgroundPositionAdjustment;

//

UIOffset searchTextPositionAdjustment;

//

- (void)setPositionAdjustment:(UIOffset)adjustment forSearchBarIcon:(UISearchBarIcon)icon;
- (UIOffset)positionAdjustmentForSearchBarIcon:(UISearchBarIcon)icon;

3、iOS7新增

//

- (void)setBackgroundImage:(UIImage *)backgroundImage forBarPosition:(UIBarPosition)barPosition barMetrics:(UIBarMetrics)barMetrics;  

//

- (UIImage *)backgroundImageForBarPosition:(UIBarPosition)barPosition barMetrics:(UIBarMetrics)barMetrics;

4、UISearchBarDelegate协议(可选)

// 是否允许编辑,如果返回为NO则不能成为第一响应者

- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar;                      

// 开始编辑

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar;                     

// 是否允许结束编辑

- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar;                        

// 结束编辑

- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar;                       

// 文本内容改变时调用

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText;   

// 如果允许继续输入,那么返回YES,否则返回NO。(可以对字数进行限制)

- (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text; 

// 当搜索按钮被点击的时候

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

//

- (void)searchBarBookmarkButtonClicked:(UISearchBar *)searchBar;                   

// cancel按钮点击时调用

- (void)searchBarCancelButtonClicked:(UISearchBar *) searchBar;                    

// ResultsList按钮被点击时调用

- (void)searchBarResultsListButtonClicked:(UISearchBar *)searchBar; 

// 还有一个很重要的事情,设了按钮就要给他们安排功能。所以说,我们要实现这个代理UISearchBarDelegate里的这个方法searchBar:selectedScopeButtonIndexDidChange:告诉表格,你选择的范围是啥。

- (void)searchBar:(UISearchBar *)searchBar selectedScopeButtonIndexDidChange:(NSInteger)selectedScope;





Comments