Отсутствует текст в 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];
    });
}
Другие вопросы по тегам