iOS开发问题——UITextField弹出PickerView方法

   在开发中需要用户填写个人信息功能的功能模块里放置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的代理方法里面取消他的第一响应。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值