Сделайте UISearchBar первым респондентом когда Загрузки Представления

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

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

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

22
задан John Duff 15 February 2010 в 23:46
поделиться

1 ответ

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

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

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

36
ответ дан 29 November 2019 в 05:00
поделиться