UIPickerView as inputView of UITextField
Try this, it works fine, put it in viewdidload.
yourpicker = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 50, 100, 150)]; [yourpicker setDataSource: self]; [yourpicker setDelegate: self]; yourpicker.showsSelectionIndicator = YES; self.yourtextfield.inputView = yourpicker;
do not [self.view addSubview: yourpicker];
this
Use like this,
// PickerUIPickerView *picker = [[UIPickerView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width,150)];picker.dataSource = self;picker.delegate = self;// Tool barUIToolbar *pickerToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width,35)];pickerToolbar.barStyle = UIBarStyleDefault;// Bar buttonUIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(pickerDoneButtonTapped:)];UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];[pickerToolbar setItems:@[flexSpace,doneButton]];self.selectedLockerTextFiled.inputAccessoryView = pickerToolbar;self.selectedLockerTextFiled.inputView = picker;
Below code for done button actions,
-(void)pickerDoneButtonTapped:(id)picker{ [self.view endEditing:YES];}
Using Swift:
let pickerView = UIPickerView()pickerView.dataSource = selfpickerView.delegate = selftextField.inputView = pickerView;
Don't forget to implement the UIPickerViewDataSource
and UIPickerViewDelegate
.