UIScrollview заморожен, когда используется панель поиска - PullRequest
0 голосов
/ 26 декабря 2011

У меня есть контроллер с панелью поиска вверху, и когда пользователь печатает, результаты автозаполнения поиска отображаются под ним в UIScrollView.

Проблема: Результаты отображаются, но пользователь не может прокрутить эти результаты. Scrollview заморожен. Единственный способ прокрутки - нажать «Отмена» на панели поиска. Нажатие «Поиск» скрывает клавиатуру, но даже тогда прокрутка останавливается.

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

На экране больше результатов, чем уместится, поэтому проблема не в том, что контент лишь немного больше экрана.

Ничего особенного в CancelButtonClicked или SearchButtonClicked:

- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar {    
   searchBar.text = @"";
}

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar{
[searchBar resignFirstResponder];
[NSThread detachNewThreadSelector:@selector(fetchSearchResult:) toTarget:self withObject:searchBar.text];    
}

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

if([searchBar.text length] >=3){
    [mySpinner startAnimating];
    [NSThread detachNewThreadSelector:@selector(fetchSearchResult:) toTarget:self withObject:searchBar.text]; 

}
}

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar {
self.searchDisplayController.searchResultsTableView.hidden = YES;
// This occurs when user starts entering text
// We want to keep the background area dark

}

1 Ответ

2 голосов
/ 22 июня 2012

Возможно, у меня была та же проблема: UISearchBar был вложен в UIScrollView, поэтому, когда показывались результаты поиска, было невозможно прокрутить родительское представление...Я был озадачен, но я узнал ( UISearchDisplayCtrl private api ), что UISearchDisplayController блокирует все родительские представления прокрутки (сука).

Поэтому U должен добавить категорию UISearchDisplayController + Custom:

@implementation UISearchDisplayController (Custom)

- (void)_disableParentScrollViews {
}

- (void)_enableParentScrollViews {
}

@end
...