-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 == ваш специальный в обратном вызове делегата.
Причина в том, что это более явно и понятно, чем использование тегов. Я предполагаю, что некоторые другие ваши текстовые представления по той или иной причине имеют такой же тег, и поэтому ваше условие не работает так, как вы думаете.