Подтвердить что ты не робот

Сделать первый ответчик UISearchBar, когда View Loads

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

- (void)viewWillAppear:(BOOL)animated
{
    [productSearchBar becomeFirstResponder];
    [super viewWillAppear:animated];
}

Есть ли другое место, которое я должен называть becomeFirstResponder на UISearchBar, или мне нужно вообще что-то вызывать?

4b9b3361

Ответ 1

Переместите его на -viewDidAppear, и все должно быть хорошо. -becomeFirstResponder подтягивает клавиатуру (как вы заметили), и вы не должны делать анимацию, прежде чем вы на экране. Вы можете получить странные взаимодействия.

Если он вообще ничего не делает, то почти наверняка productSearchBar является IBOutlet, и вы забыли привязать его к UISearchBar в Interface Builder. Это причина №1 "ничего не происходит" в пользовательском интерфейсе.

Обратите внимание, что вам не следует обращаться к вашим иварам таким образом; вы должны сделать это свойством и ссылаться только на self.productSearchBar. Наконец, Apple опубликовала правильное объяснение этого в "Управление памятью объектов Nib" . Никогда не обращайтесь к своим иварам вне аксессуаров или -dealloc. Это правило сэкономит вам много часов отладки.