-textFieldShouldBeginEditing вызывается для всех textFields, а не когда каждый textField выбран

У меня есть приложение для iPad (XCode 6.1, iOS 8.1.1, ARC и раскадровки). В одном из классов (сцен) у меня есть этот код:

-(BOOL) textFieldShouldBeginEditing:(UITextField *)textField  { //  (prevents keyboard from showing)

if(textField.tag == 200) {  //  birthdate
    [self showModalCalendar:(int)textField.tag];
    return NO;  //  don't show k/b
}
else
    return YES;

}

Это выполняется, когда первый textField выбран, проходя каждый textField, а не ждать, пока каждый textField будет выбран. Это проблема, потому что я хочу показать модальный календарь только тогда, когда был выбран определенный UITextField (дата рождения), а НЕ показывать клавиатуру. Когда я нажимаю клавишу табуляции (на жесткой клавиатуре), модальный календарь также появляется для каждого textField.

Есть ли способ предотвратить это?

2 ответа

Проблемой в моем случае была библиотека IQKeyboardManager. Я удалил эту библиотеку из своего проекта, и DownPicker работает нормально.

Вместо использования тегов вы должны создать IBOutlet для конкретного textView, который вы хотите обработать. Затем вы можете проверить, если textView == ваш специальный в обратном вызове делегата.

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

Другие вопросы по тегам