Проблема с контроллером модального представления входа в Dropbox iPad

У меня проблема с контроллером модального представления входа в Dropbox iPad: иногда вы не можете написать в текстовом поле пароль; вы можете выбрать его, и клавиатура появится, но вы не сможете писать. Обходной путь - нажать логин, там написано, что вы не ввели пароль, вы нажимаете ок, выбираете его снова и теперь работает. Это не очень приятно для пользователей. Итак, теперь вопрос: кто-нибудь нашел способ исправить SDK Dropbox или проблема только у меня?


person albianto    schedule 12.07.2011    source источник
comment
Мы не можем ответить на этот вопрос, не видя, как вы все устроили.   -  person sosborn    schedule 13.07.2011
comment
Вход в Dropbox не имеет настройки, я просто делаю «DBLoginController* controller = [[DBLoginController new] autorelease]; контроллер.делегат = сам; [контроллер присутствуетFromController:self];'   -  person albianto    schedule 13.07.2011


Ответы (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, это может повлиять на работу некоторых текстовых полей.

person memmons    schedule 21.07.2011
comment
Проблема в том, что эта неисправность появляется только иногда. Это очень сложно отлаживать. Но я попытаюсь. :) - person albianto; 22.07.2011
comment
Проблема исчезла, когда я обновился до Xcode 4.1. Думаю, это проблема с отладчиком или с SDK. - person albianto; 26.07.2011