我的控制栏位于顶部,当用户输入时,自动完成的搜索结果会显示在UIScrollView中。
问题: 结果显示,但用户无法滚动这些结果。滚动视图已冻结。滚动的唯一方法是在搜索栏中按“取消”。点击“搜索”会隐藏键盘,但即使这样,滚动视图也会被冻结。
所需: 当用户键入时,搜索结果正在自动完成。在任何给定时间,用户都可以滚动查看这些结果。他们不应该点击取消才能滚动。
屏幕上的结果多于屏幕上显示的结果,因此这不是内容只比屏幕略大的问题。
在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
}
答案 0 :(得分:2)
我可能遇到了同样的问题:UISearchBar嵌套在UIScrollView中,因此当显示搜索结果时 - 滚动父视图是不可能的。 ..我很困惑,但我学会了(UISearchDisplayCtrl private api)UISearchDisplayController锁定所有父滚动视图(婊子)。
所以你应该添加类别UISearchDisplayController + Custom:
@implementation UISearchDisplayController (Custom)
- (void)_disableParentScrollViews {
}
- (void)_enableParentScrollViews {
}
@end