2010-12-01 47 views
3

我至今是多种来源

@synthesize txtCountry,txtState; 
int flgTextField; 
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 
    [pickerView reloadAllComponents]; 

    // Make a new view, or do what you want here 
    if(textField == txtCountry || textField == txtState){ 
     flgTextField = textField.tag; 
     [UIView beginAnimations:nil context:NULL]; 
     //[pvState setFrame:CGRectMake(0.0f, 199.0f, 320.0f, 216.0f)]; 
     [UIView commitAnimations]; 
     return NO; 
    } 
    else { 
     return YES; 
    } 

} 
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView; 
{ 
    return 1; 
} 

- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component { 

    if(flgTextField==1){ 
     return [arryCountry count]; 
    } 
    else { 
     return [arryState count]; 
    } 

} 

- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { 

    if(flgTextField==1){ 
     return [arryCountry objectAtIndex:row]; 
    } 
    else{ 
     return [arryState objectAtIndex:row]; 
    } 

} 

- (void)viewDidLoad { 
    arryCountry = [[NSMutableArray alloc] init]; 
    arryState = [[NSMutableArray alloc] init]; 
    [arryCountry addObject:@" 100 "]; 
    [arryCountry addObject:@" 200 "]; 
    [arryCountry addObject:@" 400 "]; 
    [arryCountry addObject:@" 600 "]; 
    [arryCountry addObject:@" 1000 "]; 
    [arryState addObject:@" a "]; 
    [arryState addObject:@" b "]; 
    [arryState addObject:@" c "]; 
    [arryState addObject:@" d "]; 
    [arryState addObject:@" e "]; 
     [super viewDidLoad]; 
} 
在我的.m

@interface Contact : UIViewController <UIPickerViewDelegate, UIPickerViewDataSource> { 

    IBOutlet UITextField *txtCountry; 
    IBOutlet UITextField *txtState; 
    NSMutableArray *arryCountry; 
    NSMutableArray *arryState; 
    UIPickerView *pickerView; 
} 
@property(nonatomic,retain) IBOutlet UITextField *txtCountry; 
@property(nonatomic,retain) IBOutlet UITextField *txtState; 
在我.h文件中

现在的文本字段不可编辑,我需要一些帮助或指导,或者有关如何将UIPicker与可在文本字段编辑时更改的多个源连接的任何教程

+0

在textFieldShouldBeginEditing,你为什么对国恢复NO和状态字段? – Anna 2010-12-01 15:10:47

回答

8

因此,我认为没有人关心:)

什么我现在已经是3个文本框,每当我抚摸textField1的或文字栏选择器改变值并没有键盘。当我触摸textField3键盘出现,选取器隐藏。现在,如果我通过单击返回,然后单击textField1选择器退出键盘,但如果我不不关闭键盘按钮保持在选择器。当键盘firstResponder我需要的是(我看到它在屏幕上)来隐藏它,如果我在textField1的点击,只看到拾取

int variabla; 

     -(void)textFieldDidBeginEditing:(UITextField *)textField{ 
      [pickerView setHidden:YES]; 
      if (textField1.editing == YES) { 
       [textField1 resignFirstResponder]; 
       [pickerView setHidden:NO]; 
       variabla = 1; 
      }else if (textField2.editing == YES) { 
       [textField2 resignFirstResponder]; 
       [pickerView setHidden:NO]; 
       variabla = 2; 
      } 
      NSLog(@"variabla %d",variabla); 
      [pickerView reloadAllComponents]; 
     } 

     - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView; 
     { 
      return 1; 
     } 
     - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component; 
     { 
      if (variabla == 1) { 
       return [pickerArray1 count]; 
      }else if (variabla == 2) { 
       return [pickerArray2 count]; 
      }else { 
       return 0; 
      } 
     } 
     - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component; 
     { 
      if (variabla == 1) { 
       return [pickerArray1 objectAtIndex:row];   
      }else if (variabla == 2) { 
       return [pickerArray2 objectAtIndex:row]; 
      }else { 
       return 0; 
      } 
     } 
     - (void)textFieldShouldReturn:(UITextField *)textField{ 
      [textField resignFirstResponder]; 
     } 
- (void)viewDidLoad { 
    [super viewDidLoad]; 
    [pickerView setHidden:YES]; 
    pickerArray1 = [[NSMutableArray alloc] initWithObjects:@"0", @"1", @"2", nil]; 
    pickerArray2 = [[NSMutableArray alloc] initWithObjects:@"3", @"4", @"5", nil]; 
}