2013-11-14 2 views
1

У меня есть вид, называемый songInfoView с 3 UITextFields и UIButton. Я создаю временный UITextField в родительском представлении, чтобы вызвать клавиатуру и назначить songInfoView в качестве inputAccessoryView. Это работает так, как ожидалось.UITextField в inputAccessoryView не станетFirstResponder

Затем я пытаюсь установить текстовое поле в songInfoView в качестве первого ответчика. Курсор перемещается в это поле, но когда я пытаюсь ввести, ничего не происходит. Я могу нажать на текстовое поле и ввести, как ожидалось, но я хочу, чтобы он работал без необходимости использовать его. Я что-то упускаю? Я делаю это не по порядку? Спасибо за вашу помощь.

songInfoView = [[SongInfoViewController alloc]init]; 
songInfoView.delegate = self; 

UITextField *tempTextField = [[UITextField alloc]initWithFrame:CGRectMake(10.0f, 10.0f, 50.0f, 30.0f)]; 
[self.view addSubview:tempTextField]; 
[tempTextField setInputAccessoryView:songInfoView.view]; 
[tempTextField becomeFirstResponder]; 
[songInfoView.titleTextField becomeFirstResponder]; 

ответ

1

Ну, я сам это понял. Оказывается (я думаю), что экранная клавиатура (вместе с аксессуаром) имеет собственное окно. Таким образом, в рамках метода viewDidAppear songInfoView, я должен был назвать

[self.view.window makeKeyAndVisible]; 

Только не забудьте назвать это снова в контроллере представления, который вы использовали для загрузки клавиатуры после клавиатуры исчезает. Надеюсь, это поможет кому-то еще по дороге.

+0

Вы спасли мой день! У меня такая же проблема после того, как я поместил свой customView в новый 'UIWindow'. –

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