2011-12-25 15 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-たときました。 ..私は困惑しましたが、私はUISearchDisplayControllerがすべての親スクロールビュー(雌犬)をロックすることを学びました(UISearchDisplayCtrl private api)。

だから、Uは、カテゴリUISearchDisplayController +カスタムを追加する必要があります

@implementation UISearchDisplayController (Custom) 

- (void)_disableParentScrollViews { 
} 

- (void)_enableParentScrollViews { 
} 

@end 
関連する問題