文档章节

iOS中UISearchBar(搜索框)使用总结

04zhujunjie
 04zhujunjie
发布于 2015/11/04 16:57
字数 1180
阅读 439
收藏 0

iOS中UISearchBar(搜索框)使用总结

初始化:UISearchBar继承于UIView,我们可以像创建View那样创建searchBar

?

1
2
     UISearchBar * bar = [[UISearchBar alloc]initWithFrame:CGRectMake(20, 100, 250, 40)];
     [self.view addSubview:bar];

@property(nonatomic)        UIBarStyle              barStyle; 

这个属性可以设置searchBar的搜索框的风格,枚举如下:

?

1
2
3
4
5
6
7
typedef  NS_ENUM(NSInteger, UIBarStyle) {
     UIBarStyleDefault          = 0, //默认风格 白色搜索框,多出的背景为灰色
     UIBarStyleBlack            = 1, //黑色风格,黑色的搜索框
     //下面两个枚举已经被禁用,作用和黑色风格一样
     UIBarStyleBlackOpaque      = 1,  // Deprecated. Use UIBarStyleBlack
     UIBarStyleBlackTranslucent = 2,  // Deprecated. Use UIBarStyleBlack and set the translucent property to YES
};

@property(nonatomic,copy)   NSString               *text; 

设置搜索框中的文字

@property(nonatomic,copy)   NSString               *prompt; 

这个属性的官方解释是在搜索框顶部显示一行文字,其实就是背景文字,上图说明:

?

1
2
    bar.prompt = @ "搜索框" ;
    bar.text=@ "321111111111111111111111111"

效果如下:

@property(nonatomic,copy)   NSString               *placeholder;  

和其他文本输入控件的placeholder相同,在输入文字时就会消失

@property(nonatomic)        BOOL                    showsBookmarkButton; 

是否在搜索框右侧显示一个图书的按钮,默认为NO,YES的效果如下:

@property(nonatomic)        BOOL                    showsCancelButton;

是否显示取消按钮,默认为NO,YES的效果如下:

@property(nonatomic)        BOOL                    showsSearchResultsButton;

是否显示搜索结果按钮,默认为NO,YES效果如下:

@property(nonatomic, getter=isSearchResultsButtonSelected) BOOL searchResultsButtonSelected ;

设置搜索结果按钮的选中状态

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

设置显示取消按钮

@property(nonatomic,retain) UIColor *tintColor;

设置这个颜色值会影响搜索框中的光标的颜色

@property(nonatomic,retain) UIColor *barTintColor;

设置这个颜色会影响搜索框的背景颜色

@property (nonatomic) UISearchBarStyle searchBarStyle;

设置搜索框整体的风格,枚举如下:

?

1
2
3
4
5
typedef  NS_ENUM(NSUInteger, UISearchBarStyle) {
     UISearchBarStyleDefault,     // currently UISearchBarStyleProminent
     UISearchBarStyleProminent,   // 显示背景
     UISearchBarStyleMinimal      // 不显示背景
} NS_ENUM_AVAILABLE_IOS(7_0);

@property(nonatomic,assign,getter=isTranslucent) BOOL translucent;

设置是否半透明

@property(nonatomic)      BOOL       showsScopeBar ;

是否显示搜索栏的附件选择按钮试图,要想显示这个试图,首先要将这个属性设置为YES,之后给按钮数组中添加按钮,使用下面这个属性:

@property(nonatomic,copy) NSArray   *scopeButtonTitles ;

设置选择按钮试图的按钮标题

@property(nonatomic)      NSInteger  selectedScopeButtonIndex;

设置一个默认的选中按钮

?

1
2
3
     bar = [[UISearchBar alloc]initWithFrame:CGRectMake(20, 100, 250, 200)];
     bar.showsScopeBar=YES;
     bar.scopeButtonTitles = @[@ "12" ,@ "2" ,@ "3" ,@ "4" ];

@property (nonatomic, readwrite, retain) UIView *inputAccessoryView;

键盘的附属试图

@property(nonatomic,retain) UIImage *backgroundImage;

设置搜索框的背景图案

@property(nonatomic,retain) UIImage *scopeBarBackgroundImage;

设置附属选择按钮视图的背景图案


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

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

这一对方法可以设置和获取某个状态枚举下的搜索框的背景图案


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

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

这一对方法用于设置和获取搜索框中TextField的背景图案


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

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

这一对方法用于获取和设置搜索栏icon图片的图案

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

- (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;

这一对方法用于设置和获取切换按钮标题文字的字体属性字典


@property(nonatomic) UIOffset searchFieldBackgroundPositionAdjustment;

搜索文字在搜索框中的位置偏移

@property(nonatomic) UIOffset searchTextPositionAdjustment;

textfield在搜索框中的位置偏移


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

- (UIOffset)positionAdjustmentForSearchBarIcon:(UISearchBarIcon)icon;

设置搜索栏中图片的位置偏移,图片的枚举如下:

?

1
2
3
4
5
6
typedef  NS_ENUM(NSInteger, UISearchBarIcon) {
     UISearchBarIconSearch,  //搜索图标
     UISearchBarIconClear,  // 清除图标
     UISearchBarIconBookmark,  // 书本图标
     UISearchBarIconResultsList,  // 结果列表图标
};


下面是搜索框控件的一些代理方法:

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

将要开始编辑时的回调,返回为NO,则不能编辑

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

已经开始编辑时的回调

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

将要结束编辑时的回调

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

已经结束编辑的回调

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText;   编辑文字改变的回调

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

编辑文字改变前的回调,返回NO则不能加入新的编辑文字

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

搜索按钮点击的回调

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

书本按钮点击的回调

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

取消按钮点击的回调

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

搜索结果按钮点击的回调


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

搜索栏的附加试图中切换按钮触发的回调



本文转载自:http://my.oschina.net/u/2340880/blog/509756

04zhujunjie
粉丝 6
博文 71
码字总数 9272
作品 0
广州
私信 提问
UISearchBar的使用以及下拉列表框的实现

在IOS混饭吃的同志们都很清楚,搜索框在移动开发应用中的地位。今天我们就结合下拉列表框的实现来聊聊UISearchBar的使用。本人新入行的菜鸟一个,不足之处请多多指教。直接上代码。 UISearch...

开发问道
2013/02/22
0
0
(解决办法) UISearchBar 可以呼唤出键盘但无法输入

近段时间开发ios应用,出现'UISearchBar 可以呼唤出键盘但无法输入 '问题,网上搜索后,其中只有一个贴“iOS 6 系统内 UISearchBar 可以呼唤出键盘但无法输入 ”跟我的问题类似,但是回复极少...

pgbo
2012/11/02
0
0
IOS12开发者预览版第二版使用评测

     手头有一部iPhone 6s Plus,因为之前看同学和朋友们升到IOS 11后手机变得非常卡顿所以没有升级。最近偶然看到IOS 12针对旧机型做了性能优化,号称提升70%相机打开速度、50%键盘显示...

张旭乾
2018/06/23
0
0
前端系列——与众不同的移动端底部固定栏 fixed、absolute 兼容 iOS 和 Android 方案

相信我,我分享的和你在其他博客上看到的终极方案是如此的与众不同! 做过移动端开发的同学,对底部DOM定位出现的各种奇葩情况已经深恶痛绝了吧,底部DOM设置不同的position,在Android和ios...

大灰狼的小绵羊哥哥
2018/09/13
0
0
fixed定位元素被安卓、ios键盘顶起的解决办法

问题背景: 当我们在写H5页面时经常会有fixed固定位置的元素存在,例如下图左中的"作业帮一课APP下载框",当我们input输入的时候键盘会弹起并将fixed定位的下载框顶起,如下图右,ios和安卓部分机...

JamesView
2018/07/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Protocol Buffers 简介

文档编辑和持续集成状态: 本文档的 Protocol Buffer 的中文文档使用的是 Asciidoctor 进行编排的 http://docs.ossez.com/protocol-buffers-docs/index.html(本 WIKI 中的内容将会与在线发布...

honeymoose
今天
3
0
uniapp + bootstrapvue 移动/PC 一套搞定 (一)配置bootstrapvue

1.准备文件 自己到DCloud官网: http://dcloud.io/ 去下载官方的IDE Hbuilder,新建一个空的uniapp项目即可。 uniapp框架自带优化的vue,我们仅仅需要准备以下三个文件: bootstrap.min.css ...

panyunxing
今天
11
0
Android Camera原理之camera service类与接口关系

camera service主要是指 frameworks/av/services/camera/下面的代码,最近在看这一块的代码,为了更好地理清这一块的代码,也为了后续学习camera方便一些,我觉得很有必要理一下这一块的整体...

天王盖地虎626
今天
6
0
Golang学习笔记

[TOC] Golang学习笔记 这个学习笔记是最早在1.初,版本左右的时候写的,和当前最新的版本可能会有较大的差异. 因为成文比较早,文章里面又有很多自己的见解,有些东西当时理解的不太透彻可能写错...

我爱吃炒鸡
今天
18
0
科技赋能成效显著!金融壹账通两大赋能项目荣获IDC大奖

7月19日,2019IDC中国未来金融论坛曁颁奖典礼于北京举办。由金融壹账通赋能的长春农商银行多人视频面审智能风控系统、包头农商银行互联网银行SaaS服务两大项目因在项目的创新性、技术领先性、...

IFTNews
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部