У меня проблема с контроллером модального представления входа в Dropbox iPad: иногда вы не можете написать в текстовом поле пароль; вы можете выбрать его, и клавиатура появится, но вы не сможете писать. Обходной путь - нажать логин, там написано, что вы не ввели пароль, вы нажимаете ок, выбираете его снова и теперь работает. Это не очень приятно для пользователей. Итак, теперь вопрос: кто-нибудь нашел способ исправить SDK Dropbox или проблема только у меня?
Проблема с контроллером модального представления входа в Dropbox iPad
Ответы (1)
Я использую Dropbox SDK с приложением для iPad. Я просмотрел их DBLoginController.h/.m
код. Управление паролем — это простая UITextField
, которая добавляется к UITableViewCell
. Есть всего несколько мест, где текст, вводимый в поле, можно было изменить на лету. Один из них -(BOOL)textField:shouldChangeCharactersInRange:replacementString
. Глядя на код в DBLoginController, я вижу это:
- (BOOL)textField:(UITextField *)textField
shouldChangeCharactersInRange:(NSRange)range
replacementString:(NSString *)string {
[self performSelector:@selector(updateActionButton) withObject:nil afterDelay:0];
return YES;
}
Это нормально, так как он всегда возвращает YES.
Следующая возможность заключается в том, что textField на самом деле не получает фокус. Лучший способ проверить это — поместить NSLog() в файл shouldChangeCharactersInRange
. Этот NSLog() должен вызываться каждый раз, когда вы вводите символ в поле пароля. Если вы печатаете и не видите никаких выходных данных NSLog(), это означает, что поле пароля не имеет фокуса. Следующим шагом будет выяснить, что действительно имеет фокус и почему.
DBLoginController — довольно простой класс. Не должно быть сложно отследить, что происходит.
Одна последняя мысль: если у вас есть какие-либо категории, определенные в UITextField
, это может повлиять на работу некоторых текстовых полей.