2012-03-30 63 views
3

我发现了很多来自互联网的示例代码,但也不起作用....任何人都可以告诉我下面我的代码有什么问题?非常感谢。 SOS当我打开我的UITextField时,如何显示UIPickerView?

//我storeboard屏幕
http://imageupload.org/en/file/209300/03.jpg.html

//This is PickerViewTest.h 

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

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

@end 


//This is PickerViewTest.m 

@interface InputRound() 

@end 

@implementation PickerViewTest 

@synthesize pvPickerTest, aryMaster; 

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

-(void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 

    aryMaster = [[NSMutableArray alloc] init]; 

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

-(NSInteger)numberOfComponentsInPickerView:(NSInteger)component 
{ 
    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]; 
} 

-(void)viewDidUnload 
{ 
    [super viewDidUnload]; 
    // Release any retained subviews of the main view. 
} 

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    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; 
} 

@end 
+0

您是否将UITextFieldDelegate添加到.h和您的UITextField? – Raptor 2012-03-30 03:13:46

+0

在textFieldDidBegin中编写代码并给予代理 – Hiren 2012-03-30 06:18:24

回答

18

不要试图通过滚动自己的外表动画模仿内置的一个推倒重来。设置选择器视图为您的文本字段输入视图,并且系统会做动画为您提供:

textField.inputView = pickerView; 

当你开始编辑文本字段,选取器是动画在屏幕上你。有关更多详细信息,请参阅我的回答here,其中包括在顶部添加一个带有“完成”按钮的工具栏。

+0

如何删除动画当它出现时 – Ujesh 2015-10-14 05:31:52

相关问题