2011-04-12 3 views
4

У меня есть два текстовых поля для имени пользователя и пароля и кнопки отправки. Когда нажата кнопка отправки, выполняется проверка, чтобы определить, было ли введено имя пользователя и пароль. Если нет, то появляется предупреждающее сообщение, и поле, значение которого не было введено, становится первым ответчиком.getFirstResponder замедляет приложение

-(IBAction)loginPressed:(id)sender { 


    if ([username.text length] == 0) 
    { 
     [self showAlert:@"Invalid Username/ Password"]; 
     [username becomeFirstResponder]; 
     return; 
    } 

    if ([password.text length] == 0) 
    { 
     [self showAlert:@"Invalid Username/ Password"]; 
     [password becomeFirstResponder]; 
     return; 
    } 
} 

Я заметил, что при нажатии кнопки кнопка остается выбранной примерно 1,5 секунды, а затем отображается предупреждение. Если я прокомментирую метод becomeFirstResponder, он работает без паузы. Однако мне нужно becomeFirstResponder быть там. Как мне ускорить работу?

+1

Возможно, глупый вопрос: что произойдет, если вы переключите порядок использования startFirstResponder и showAlert? –

+0

Эй, это решило. Прекрасно работает. Благодарю. Отправьте его как ответ. –

ответ

5

Переключить заказы на startFirstResponder и showAlert.

+1

У меня такая же проблема без предупреждения :(Массивная задержка (несколько секунд!), Чтобы вызвать startFirstResponder. – Adam

+0

У меня тоже такая же проблема, без предупреждения - просто отображая представление/текстовое поле, а затем вызываем startFirstResponder. идеи? –

0

[self showAlert: @ "Invalid Username/Password"]; потребуется некоторое время. вы не можете проверить эту штуку.

+0

Но согласно OP, нет никакой задержки, если removeFirstResponder удален, поэтому, по-видимому, showAlert здесь не проблема. –

Смежные вопросы