2011-12-25 52 views
0

我有一个控制器,顶部有一个搜索栏,当用户输入时,在UIScrollView中显示自动完成的搜索结果。当搜索栏在使用时,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 

} 

回答

2

我有可能是同一个问题:是的UISearchBar嵌套UIScrollView的,所以,当搜索结果是shown-这是不可能的滚动父视图。 ..我很困惑,但我知道(UISearchDisplayCtrl private api)UISearchDisplayController锁定所有父滚动视图(母狗)。

,这样你们应该添加类别UISearchDisplayController +自定义:

@implementation UISearchDisplayController (Custom) 

- (void)_disableParentScrollViews { 
} 

- (void)_enableParentScrollViews { 
} 

@end 
相关问题