iOS开发问题——UITextField弹出PickerView方法
2015-08-13 11:56
393 查看
在开发中需要用户填写个人信息功能的功能模块里放置UITextField来提供用户输入。而为了提升用户体验,方便用户操作,规范输入内容或者根据业务服务区域等因素,往往需要在UITextField进入第一响应模式的时候弹出可供用户选择的UIPickerView。(也有部分使用Button来实现该效果,对于这类稍后会介绍)对于这种需求的实现,整理代码如下:
注:需要添加pickerView代理协议
-(void)creatPickerView{UIPickerView * pickerView = [[UIPickerView
alloc]initWithFrame:CGRectMake(0,
0, WIDTH,
0)];
pickerView.delegate =
self;
pickerView.dataSource =
self;
pickerView.showsSelectionIndicator =
YES;
pickerView.backgroundColor = [UIColor
whiteColor];
UIToolbar
*toolBar = [[UIToolbar
alloc]initWithFrame:CGRectMake(0,
0, WIDTH,
44)];
//设置toolBar的样式
//toolbar.barStyle = UIBarStyleDefault;
/***必要步骤****/
self.studyTextField.inputView = pickerView;
self.studyTextField.inputAccessoryView
= toolbar;
//这个是toolBar上的确定按钮
UIBarButtonItem *doneButton = [[UIBarButtonItem
alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemDone
target:self
action:@selector(doneTouched:)];
doneButton.title =
@"确定";
//取消按钮
UIBarButtonItem *cancleButton = [[UIBarButtonItem
alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemCancel
target:self
action:@selector(cancleTouched:)];
cancleButton.title =
@"取消";
//将取消按钮,一个空白的填充item和一个确定按钮放入toolBar
[toolBar
setItems:[NSArray
arrayWithObjects:cancleButton,[[UIBarButtonItem
alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
target:nil
action:nil],doneButton,
nil]];
}
#pragma mark -toolBarBarItem的方法
-(void)doneTouched:(UIBarButtonItem *)sender{
//将textField的第一响应取消
[self.studyTextField
resignFirstResponder];
}
-(void)cancleTouched:(UIBarButtonItem *)sender{
//将textField的第一响应取消
[self.studyTextField resignFirstResponder];
}
#pragma mark - pickerViewDelegate&dataSource
//返回picker有几列
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
return 1;
}
//返回每列有几行
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
//数据源
return [self.pickerArray
count];
}
//返回每行显示的内容
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
NSString *item = [self.pickerArray
objectAtIndex:row];
return item;
}
//picker选取某一行执行的方法
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
}
如果是想通过button实现这样的效果的话可以在button上添加一个TextField并添加代理,在textField的代理方法里面取消他的第一响应。
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- IOS 改变键盘颜色代码
- Android和IOS的浏览器中检测是否安装某个客户端的方法
- javascript实现阻止iOS APP中的链接打开Safari浏览器
- iOS开发之路--微博OAuth授权_取得用户授权的accessToken
- ios通过按钮点击异步加载图片
- 加载带有手势识别器的XIB文件需注意哪些问题
- 仅需几行代码实现方便易用的状态栏指示器
- ios中图像进行压缩方法汇总