2013-03-12 20 views
1

我在我的应用程序中有一个包含8个文本框的表单视图。其中两个是由采摘者填写,其余由正常的嘿嘿打字。当选择行选择或按下返回按钮时,相应的文本应输入到文本字段中。在一个视图中使用不同输入(键盘/选取器)的多个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的heyboard ourse :) – user2135738 2013-03-12 18:01:27

+0

解决!我需要在if语句内返回YES,并在else语句中返回NO。 – user2135738 2013-03-13 11:51:17

回答

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 
相关问题