Как получить доступ к кнопке открытого текста на панели поиска? - PullRequest
1 голос
/ 02 декабря 2010

Когда я нажимал кнопку «очистить» (ту, которая появляется при редактировании) в поиске tableView, я пытался заставить клавиатуру исчезнуть.Как я могу определить, когда нажата кнопка «очистить», чтобы я мог отказаться от первого ответа? Я уже пробовал это в методе textDidChange:

if (SearchBar.text == @"") {
    [SearchBar resignFirstResponder];
    NSLog(@"clear called");
}

, который не работал ..., а также пробовал:

 if (SearchBar.text == nil) {
    [SearchBar resignFirstResponder];
    NSLog(@"clear called");
}

Ни один из методов не показывает, что они были вызваны.Есть идеи?

РЕДАКТИРОВАТЬ: теперь resignFirstResponder, кажется, не работает.Клавиатура остается на экране.Что я делаю не так?

Ответы [ 3 ]

2 голосов
/ 02 декабря 2010

Вы можете попробовать просмотреть свойство text панели поиска, зарегистрировавшись для уведомления KVO:

[self.searchBar addObserver:self forKeyPath:@"text" options:NSKeyValueObservingOptionNew context:NULL];

и затем реализовав:

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
  if (object == self.searchBar && [keyPath isEqualToString:@"text"]) {
    // Handle the new value of self.searchBar.text
  }
}

Редактировать : неважно, ответил выше =)

2 голосов
/ 22 апреля 2013

Я знаю, что этот вопрос старый, но другой способ сделать это:

if(searchText.length == 0)

в - (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText

2 голосов
/ 02 декабря 2010

Для сравнения строк следует использовать

if([SearchBar.text isEqualToString: @""])
...