我需要跟踪哪个文本字段是我的自定义键盘可以使用的firstResponder。在下面的代码中,我大大简化了程序,但这是问题的要点:

@implementation SimplePickerViewController
@synthesize pickerKeyboard;
@synthesize textView;
@synthesize textView2;
@synthesize firstResponder;

-(void)viewDidLoad{
    pickerKeyboard = [[PickerKeyboardViewController alloc] initWithNibName:@"PickerKeyboard" bundle:nil];
    pickerKeyboard.delegate = self;
    [self.textView setInputView:pickerKeyboard.view];
    [self.textView setDelegate:self];
    [self.textView2 setInputView:pickerKeyboard.view];
    [self.textView2 setDelegate:self];
}

-(void)hideKeyboard{
    [self.firstResponder resignFirstResponder];
    self.firstResponder = nil; //without this line, the code doesn't work.
}
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView{
    self.firstResponder = textView;
    [self.pickerKeyboard.picker reloadAllComponents];
    return YES;
}

如果删除将firstResponder设置为nil的行,代码将停止正常运行,但是我不确定为什么。 (没有那一行,我可以选择第一个textView来调出键盘,但是在那之后我再也不能调回键盘了。有什么想法吗?谢谢!

最佳答案

我不确定我是否理解为什么需要跟踪firstResponder才能使自定义键盘正常工作。我使用自定义键盘,却不知道第一响应者是什么。

您是否使用:

textView.inputView = pickerKeyboard

怎么样,在视图上调用以辞退第一响应者:
[self.view endEditing:NO];

关于ios - 跟踪firstResponder对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3846608/

10-13 03:56