Я работаю над довольно простым приложением для iPhone, чтобы решить квадратное уравнение, в основном потому, что это так просто — по крайней мере, концепции и математика!
Я создал интерфейс в Interface Builder, который имеет пару меток, 3 текстовых поля (varAfield и т. д.) и кнопку «Решить». 3 текстовых поля, которые установлены как UITextFieldDelegate, были настроены так, чтобы они автоматически отображали клавиатуру «Числа и пунктуация». Этот код используется для отключения клавиатуры, а затем автоматического перехода к следующей переменной, когда пользователь нажимает клавишу возврата (которая говорит «Далее», за исключением переменной C, которая говорит «Готово»
- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
if (theTextField == varAfield) {
[varAfield resignFirstResponder];
[varBfield becomeFirstResponder];
}
if (theTextField == varBfield) {
[varBfield resignFirstResponder];
[varCfield becomeFirstResponder];
}
if (theTextField == varCfield) {
[varCfield resignFirstResponder];
}
return YES;
}
Во всяком случае, проблема возникает с первым экземпляром beFirstResponder. Клавиатура появляется как надо, однако она использует клавиатуру ASCII вместо «Цифры и знаки препинания». При втором вызове она работает как надо. Кроме того, если я снова начну с переменной A, все будет нормально. Независимо от того, куда я перемещаю первый экземпляр beFirstResponder, при первом (и только первом) вызове в приложении он ведет себя неправильно.
Обновление: beFirstResponder по-прежнему (даже в первом случае) уважает мой выбор клавиши возврата, но независимо от того, какая клавиатура установлена, она по-прежнему показывает «ASCII Capable». Так что же происходит? Я проверил все в IB, и кажется, что все в порядке ...