2012-01-18 2 views
7

Есть ли возможность сбросить UISearchbar с программным обеспечением searchDisplayController, который активен и уже содержит текст?Сброс программ UISearchbar программно

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

    if (tableView == self.searchDisplayController.searchResultsTableView) { 
     searchDisplayController.searchResultsTableView.hidden = YES; 
     searchBar.showsCancelButton = NO; 
     [searchBar resignFirstResponder]; 
    } 
} 

Это решение работает, но в поиске есть еще текст. Если я добавлю эти строки кода:

searchBar.text = @""; 

Всегда есть черный прозрачный вид слева.

Любые решения?

+0

попробовать searchBar.text = ноль; –

ответ

6

Здесь я иду. Это метод делегата, вызываемый при удалении пользователя. Если вы хотите подключить его по-другому, просто объявите свою панель поиска в качестве выходного канала и обратитесь к ней. В любом случае:

-(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar 
{ 
    searchBar.text = @""; 
    [searchBar resignFirstResponder]; 
} 
+0

Не понимаю, как это должно работать? Пожалуйста, прочитайте мой обновленный вопрос. –

+0

Я думаю лучший вопрос на этом этапе - спросить, какое поведение вы ищете? В моих барах поиска я редко использую SB с SRC. Я просто использую SB и забочусь о том, как он представлен сам. Если вы ищете для «перезагрузки», то код, который я вам предоставил, - это все, что вам нужно.Если вы хотите «избавиться от него», то я использую метод делегата scrollViewWillBeginDragging, чтобы отключить клавиатуру и позволить пользователю прокручивать результаты. –

+0

Я могу отправить вам полный пример того, как я это делаю (например, я почти всегда использую TableView, а не TableViewController и помещаю SB в фиксированное положение над телевизором, чтобы он всегда был доступен). Как я уже сказал, точно знать, что вы хотите, чтобы это выглядело и как вы хотите, чтобы он себя вел, действительно поможет нам помочь вам лучше. –

0

вы не должны выбыть firstResponder

+0

Я обновил свой вопрос. –

+0

Отставка первого ответчика отклонит клавиатуру. – RyanTCB

0
[self.searchBar resignFirstResponder] 
+1

Это решение поддерживает поиск в формате BAB, как он есть, и скрывает клавиатуру. –

0

Вы также можете явно скрыть resultsTableView, если это то, что вы хотите:

searchDC.searchResultsTableView.hidden=YES; 

(searchDC является экземпляром UISearchDisplayController)

Это поможет вам скрыть кнопку «Отмена» и прочее: http://www.alexandre-gomes.com/?p=418

+0

Я бы предпочел, чтобы searchBar был пуст и не активирован -> no chancelButton –

+0

См. Мой отредактированный ответ –

+0

См. Мой отредактированный вопрос. (-: –

4

Довольно уверен, что вы ищете, UISearchDisplayController.active

Из SDK:

@property(nonatomic, getter=isActive) BOOL active 

Если вы установите это значение напрямую, любое изменение производится без анимации. Используйте setActive: анимированный: если необходимо изменить аранжировку состояния.

Когда пользователь фокусируется в поле поиска управляемой панели поиска, контроллер отображения поиска автоматически отображает интерфейс поиска. Вы можете использовать это свойство, чтобы заставить интерфейс поиска отображаться.

+0

довольно большой ответ для первого здесь. Добро пожаловать! – brainray

1

Эта ветка такая старая, что у нее есть пыль. Тем не менее здесь мы в стрижа так

<#your UISearchController variable#>.isActive = false 
Смежные вопросы