UIPickerView as inputView of UITextField
Solution 1
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
Solution 2
Use like this,
// Picker
UIPickerView *picker = [[UIPickerView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width,150)];
picker.dataSource = self;
picker.delegate = self;
// Tool bar
UIToolbar *pickerToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width,35)];
pickerToolbar.barStyle = UIBarStyleDefault;
// Bar button
UIBarButtonItem *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];}
Comments
-
SilverHood almost 3 years
I've read a lot about how I can use a
UIPickerView
as theinputView
of myUITextField
. The thing is, I am able to call theUIPickerView
when I tap on theUITextField
. However, my app always loads with theUIPickerView
shown. I have already tried changing themyownpickerview.hidden = YES;
inviewDidLoad
, but this causes problems when I click on theUITextField
. It won't show up, and if I click multiple times, the debugger shows that there would be an error.Can anyone point me in the right direction? I only want the
UIPickerView
shown after I tap on theUITextField
I'm still working on my first ever iOS app. Please be patient. Thank you =)