У меня есть простое UIViewController
и a UISearchBar
, когда представление загружается, я хочу иметь панель поиска, становятся первым респондентом сразу же так, чтобы клавиатура показала, и они могут начать вводить свой запрос сразу же. Я пытался выполнить в нем viewWillAppear
как ниже без любой удачи:
- (void)viewWillAppear:(BOOL)animated
{
[productSearchBar becomeFirstResponder];
[super viewWillAppear:animated];
}
Есть ли другое место, которое я должен называть becomeFirstResponder
на UISearchBar
или я должен называть что-то еще полностью?
Переместите это в -viewDidAppear
, и все будет в порядке. -becomeFirstResponder
подтягивает клавиатуру (как вы заметили), и вы не должны делать анимацию, пока не окажетесь на экране. Вы можете получить странное общение.
Если он вообще ничего не делает, то почти наверняка productSearchBar
является IBOutlet, и вы забыли привязать его к UISearchBar
в Interface Builder. Это причина №1 «ничего не происходит» в пользовательском интерфейсе.
Обратите внимание, что вы не должны получать доступ к своим ivar таким образом; вы должны сделать его свойством и ссылаться только на self.productSearchBar
. Apple наконец опубликовала правильное объяснение этого в своей статье Управление памятью объектов наконечника . Никогда не обращайтесь к своим ivars вне аксессора или -dealloc
. Это правило сэкономит вам много часов на отладку.