2011-12-25 3 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 
관련 문제