2013-03-12 1 views
1

8 개의 텍스트 필드가 포함 된 내 응용 프로그램에서 양식과 유사한보기가 있습니다. 그 중 2 개는 선택기로 채워지고, 나머지는 보통의 하이 보드 타이핑으로 채워집니다. 피커 행을 선택하거나 돌아 가기 버튼을 누르면 해당 텍스트를 텍스트 필드에 입력해야합니다.다른 입력 (키보드/피커)이있는 하나의보기에서 여러 개의 uitextfields

올바르게 구현하는 방법에 대해 조언 해 주시겠습니까? 또한 선택/반환을 누른 후에 선택기/키보드를 닫을 수 있습니다.

나는 비슷한 것을 찾아 냈습니다 here. 그리고 나는 2 피커 - 텍스트 필드가 작동하도록 관리 할 수 ​​있었지만 지금은 나머지를 위해 키보드를 표시 할 수 없습니다. textFieldShouldBegineEditing 메서드를 재정의했기 때문에 그럴 것 같습니다. 그 아이디어를 얻을 수있는 아이디어가 있습니까? 어떻게 든 textFieldShouldBeginEditing 내부에서 기본 메서드를 호출 할 수 있습니까 ?? 참고, textFieldShouldBeginEditing 내 마지막 줄의 주석을 제거하면 충돌이 발생합니다 ...

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 
{ 
currentTextField = textField; 

if (textField == self.pickerField1) { 
    currentArray = self.array1; 
    [pickerView reloadAllComponents]; 
    pickerView.hidden = NO; 
    [self animatePickerViewIn]; 
    return NO; 
} 
if (textField == self.pickerField2){ 
    currentArray = self.array2; 
    [pickerView reloadAllComponents]; 
    pickerView.hidden = NO; 
    [self animatePickerViewIn]; 
    return NO; 

} 
// else { 
//  [currentTextField becomeFirstResponder]; 
//  return NO; 
// } 
- (void)pickerView:(UIPickerView *)pickerView 
    didSelectRow:(NSInteger)row inComponent: (NSInteger)component 
{ 
[currentTextField setText:[currentArray objectAtIndex:row]]; 
[currentTextField resignFirstResponder]; 
pickerView.hidden = YES; 
} 

고마워요! -

+0

나는 c의 헤이의 대신 키보드를 의미했습니다. ourse :) – user2135738

+0

해결 된! if 문에서 YES를 반환하고 else 문에서 NO를 반환해야했습니다. – user2135738

답변

1

더 많은 정보가 필요합니다 사람이 추가 여기에 내가 그것을 user2135738 년대를 사용하여 작업을 제공하는 코드를 가지고 방법은 다음과 같습니다

MyViewController.h을

#import <UIKit/UIKit.h> 

@interface MyViewController : UIViewController <UITextFieldDelegate, UIPickerViewDataSource, UIPickerViewDelegate> 

@property (weak, nonatomic) IBOutlet UITextField *aTextField; 
@property (weak, nonatomic) IBOutlet UITextField *bTextField; 

@end 

MyViewController.m

#import "MyViewController.h" 

@interface MyViewController() 
@end 

@implementation MyViewController { 
    NSArray *aArray, 
    *bArray, 
    *currentArray; 

    UITextField *currentTextField; 
    UIPickerView *pickerView; 
} 

- (void)viewDidLoad { 
    aArray = [NSArray arrayWithObjects: @1, @2, @3, @4, @5, @6, @7, @8, @9, @10, @11, @12, @13, @14, @15, @16, @17, @18, @19, @20, nil]; 
    bArray = [NSArray arrayWithObjects:@"aString", @"bString", nil]; 

    [super viewDidLoad]; 

    pickerView = [[UIPickerView alloc] init]; 
    pickerView.dataSource = self; 
    pickerView.delegate = self; 
    self.aTextField.delegate = self; 
    self.bTextField.delegate = self; 

    self.aTextField.inputView = pickerView; 
    self.bTextField.inputView = pickerView; 
} 

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 
{ 
    currentTextField = textField; 

    if (textField == self.aTextField) { 
     currentArray = aArray; 
     [pickerView reloadAllComponents]; 
     pickerView.hidden = NO; 
     return YES; 
    } else if (textField == self.bTextField){ 
     currentArray = bArray; 
     [pickerView reloadAllComponents]; 
     pickerView.hidden = NO; 
     return YES; 
    } else { 
     [currentTextField becomeFirstResponder]; 
     return NO; 
    } 

} 

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

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { 
    return [currentArray count]; 
} 


- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{ 
    return [NSString stringWithFormat:@"%@",[currentArray objectAtIndex:row]]; 
} 

@end 
관련 문제