How can I show the UIPickerView when I hit my UITextField?

I found many code examples from the internet but also doesn't work ... Can anyone tell me what's wrong with my coding below? many thanks. SOS

// My repository screen

//This is PickerViewTest.h

@interface InputRound : UIViewController<UITextFieldDelegate>
    UIPickerView *pvPickerTest;
    NSMutableArray *aryMaster;

@property (nonatomic, retain) IBOutlet UIPickerView *pvPickerTest; 
@property (nonatomic, retain) NSMutableArray *aryMaster;


//This is PickerViewTest.m

@interface InputRound ()


@implementation PickerViewTest

@synthesize pvPickerTest, aryMaster;

-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    return self;

    [super viewDidLoad];
    // Do any additional setup after loading the view.

    aryMaster = [[NSMutableArray alloc] init];

    [aryMaster addObject:@"User01"];
    [aryMaster addObject:@"User02"];
    [aryMaster addObject:@"User03"];    

    return 1;

-(NSInteger)pickerView:(UIPickerView *)picker numberOfRowsInComponent:(NSInteger)component
    return [aryMaster count];

-(NSString *) pickerView:(UIPickerView *)picker titleForRow:(NSInteger)row forComponent:(NSInteger)component   
    return [aryMaster objectAtIndex:row];

    [super viewDidUnload];
    // Release any retained subviews of the main view.

    return (interfaceOrientation == UIInterfaceOrientationPortrait);

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField
    // Show UIPickerView
    pvPickerTest.frame = CGRectMake(0, 500, pvPickerTest.frame.size.width,     pvPickerTest.frame.size.height);

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:.50];
    [UIView setAnimationDelegate:self];

    pvPickerTest.frame = CGRectMake(0, 200, pvPickerTest.frame.size.width, pvPickerTest.frame.size.height);
    [self.view addSubview:pvPickerTest];
    [UIView commitAnimations];    
    return NO;




source to share

1 answer

Don't try to reinvent the wheel by showing your own appearance animation to mimic the one built into it. Set the selection view as the input view for the textbox and the system will animate for you:

textField.inputView = pickerView;


When you start editing the text box, the picker will animate on screen for you. See my answer here for more information , including adding a toolbar on top with the Finish button.



All Articles