Отсутствует текст в UITextField при вызове становления beginFirstResponder и настройке текста, если он встроен в UINavigationController
Я создал простой проект в качестве тестового примера для этой проблемы.
У меня есть одно простое представление, с одним UITextField, встроенным в UINavigationController.
Если я позвоню:
self.textField.text = @"TEST";
[self.textField becomeFirstResponder];
внутри viewDidLoad. Текстовое поле появляется, но текст искажен, не виден или не выровнен.
Если я либо установлю текст, либо вызову comeFirstResponder в viewDidAppear, то эта проблема не возникнет, но я не получу желаемых результатов, поскольку анимация клавиатуры задерживается, и мне нужно, чтобы клавиатура и текст были видны, пока появляется новое представление.
Тест-кейс: Тестовый проект
1 ответ
Вы можете вызывать его только в этом представлении, если оно является частью иерархии представлений. Если свойство окна представления содержит объект UIWindow. Попробуй вот так.
-(void)viewWillAppear:(BOOL)animated
{
self.textField.text = @"TEST";
[super viewWillAppear:animated];
dispatch_async(dispatch_get_main_queue(), ^{
[self.textField becomeFirstResponder];
});
}