Делегат UISearchBar не звонил при использовании в качестве UINavigationBar titleVIew?

У меня есть UITableViewController, который я указал как UISearchBarDelegate. Вплоть до сих пор я программно добавил UISearchBar к headerView таблицы, и не было никаких проблем.

Я начал заканчиваться экранную недвижимость, таким образом, я решил уничтожить свой нормальный заголовок UINavigationController (который был текстом), и добавил следующий код, переместив мой SearchBar от таблицы до UINavigationBar:

// (Called in viewDidLoad)
// Programmatically make UISearchBar
UISearchBar *tmpSearchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0,0,320,45)];
tmpSearchBar.delegate = self;
tmpSearchBar.showsCancelButton = YES;
tmpSearchBar.autocorrectionType = UITextAutocorrectionTypeNo;
tmpSearchBar.autocapitalizationType = UITextAutocapitalizationTypeNone;
[self set_searchBar:tmpSearchBar];
[tmpSearchBar release];
self.navigationItem.titleView = [self _searchBar];

Этим кодом работы как ожидалось - мой UINavigationBar является теперь UISearchBar. Однако мой метод делегата:

/** Only show the cancel button when the keyboard is displayed */
- (void) searchBarDidBeginEditing:(UISearchBar*) lclSearchBar
{
  lclSearchBar.showsCancelButton = YES;
}

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

/** Run the search and resign the keyboard */
- (void) searchBarSearchButtonClicked:(UISearchBar *)lclSearchBar
{
  _deepSearchRan = NO;
  [self runSearchForString:[[self _searchBar] text] isSlowSearch:NO];
  [lclSearchBar resignFirstResponder];
}

Какие-либо идеи, почему UINavigationBar глотает мои вызовы делегата?? Что я пропускаю?

5
задан makdad 13 June 2010 в 03:15
поделиться

1 ответ

Я думаю, вы неправильно написали сигнатуру метода. Это должно быть: - searchBarTextDidBeginEditing: Вот все методы UISearchBarDelegate для редактирования текста.

– searchBar:textDidChange:

– searchBar:shouldChangeTextInRange:replacementText:

– searchBarShouldBeginEditing:

– searchBarTextDidBeginEditing:

– searchBarShouldEndEditing:

– searchBarTextDidEndEditing:

UISearchBarDelegate

7
ответ дан 14 December 2019 в 08:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: