您的位置:首页 > 产品设计 > UI/UE

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的代理方法里面取消他的第一响应。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  iOS uitextfield