Сделать UISearchBar первым респондентом, когда View Loads - PullRequest
22 голосов
/ 16 февраля 2010

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

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

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

1 Ответ

36 голосов
/ 16 февраля 2010

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

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

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

...