2010-10-02 3 views
2

Мне нужно отслеживать, какое текстовое поле является первымResponder для моей пользовательской клавиатуры для работы. В приведенном ниже коде, я грубо упрощать свою программу, но вот суть проблемы:Отслеживание объекта 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 к нулю линии, код перестает функционировать должным образом, но я не являюсь Конечно, почему. (Без этой строки я могу выбрать первый textView для вызова клавиатуры, но после этого я никогда не смогу вернуть клавиатуру. Любые идеи? Спасибо!

ответ

3

Я не уверен, что я понимаю, почему firstResponder должен быть . отслеживала для пользовательских клавиатуры для работы я использую пользовательский клавиатуры, не зная, что первый ответчик

используете ли вы:.

textView.inputView = pickerKeyboard 

Как насчет следующего, созванного по мнению уйти в отставку первый отвечающий:

[self.view endEditing:NO]; 
2

У меня была аналогичная проблема, и я только что понял проблему. Где-то в некоторой части первого кода защиты от Apple они используют селектор с именем firstResponder. Когда вы создали свойство firstResponder, вы случайно перевернули этот селектор. Это приведет к сбою кода Apple. Это, по моему скромному мнению, является ошибкой в ​​структуре Apple, а метод firstResponder не документирован нигде. Назовите свою собственность myFirstResponder или что-нибудь еще, и все должно работать нормально.

Why does the keyboard not show when a view is popped from the navigation stack?

+0

Вы потрясающий !!! Это была моя точная проблема. –

Смежные вопросы