2011-12-27 4 views
6

У меня есть два текстовых поля в UIAlertView. Я хочу, чтобы второй стал первым ответчиком, так что пользователю не нужно нажимать на него. После того, как я покажу предупреждение, у меня есть этот код:Как сделать текстовое поле «первым ответчиком» в UIAlertView

[textField becomeFirstResponder]; 

Проблема только в том, что она не работает. В первом текстовом поле есть символ typer. Есть идеи? Спасибо за вашу помощь.

ответ

12

У меня была такая же проблема с пытается установить фокус на поле ввода пароля в UIAlertView (я предварительно наполнении имя пользователя). Я должен был использовать метод делегата:

- (void)didPresentAlertView:(UIAlertView *)alertView { 
    UITextField *textField = [alertView textFieldAtIndex:0]; 
    [textField becomeFirstResponder]; 
} 

Если бы я попробовал его на willPresentAlertView или когда я создаю alertView, он не работает, только на didPresentAlertView. Надеюсь, это поможет.

+1

Это именно то, что мне нужно для 'стиле UIAlertViewStyleLoginAndPasswordInput' AlertView. Только хочу, чтобы я не видел, чтобы он менял поля. Пробовал это в willPresent, хотя и не признал бы поле. – Sepui

+0

Я пробовал это в didPresentAlertView, но это не сработало. – Revinder

+1

Теперь это может быть иначе: UIAlertViews были изменены на представления в iOS8. –

0

Вам необходимо создать оповещение и добавить к нему UITextField. Затем вы можете назначить новое текстовое поле в качестве вашего первого ответчика, и это вызовет клавиатуру с вашим предупреждением.

Вот история, которая может быть тем, что вы ищете.

Alert View with Prompt

0

Отмеченный ответ правильный, я просто добавляю немного разъяснения, связанные с моим комментарием выше, вот код; тест, что поле существует, прежде чем использовать его и смотрит на индекс 0:

if ([alertView textFieldAtIndex:0]) 
    { 
     UITextField *textfield = [alertView textFieldAtIndex:0]; 
     [textfield becomeFirstResponder]; 
    } 
Смежные вопросы