2010-08-09 2 views
7

다음은 iPhone SDK의 최신 문제입니다.UISearchBar 스코프 바를 항상 표시하는 방법은 무엇입니까?

저는 UISearchBar와 그 위임을 모두 설정했습니다. 내보기를로드 할 때 또한, 나는 내보기가 처음 발표 될 때 예상대로, 나는 범위 표시 줄을 참조

self.searchDisplayController.searchBar.showsScopeBar = YES; 

그런 식으로

를 호출합니다. 그러나 검색 창 내부를 터치 한 다음 바깥 쪽을 터치하면 (또는 검색을 수행 한 다음 취소하더라도) 범위 표시 줄이 다시 숨겨집니다.

제 질문은 스코프 바를 항상 볼 수있게 할 수 있습니까? 검색을 수행 한 후에도?

고마워요.

답변

10

UISearchDisplayController가 스코프 바를 숨기고 있습니다.

@interface MySearchBar : UISearchBar { 

} 

@end 

@implementation MySearchBar 

- (void) setShowsScopeBar:(BOOL) show 
{ 
    [super setShowsScopeBar: YES]; // always show! 
} 

@end 

그런 다음, 인터페이스 빌더에서 (즉,이와 관련된보기에 당신이 가지고있는 검색 바의 클래스를 변경 :

이 주변의 방법은 UISearchBar를 서브 클래스 화해, 오버라이드 (override) setShowsScopeBar의 구현을하는 것입니다 UISearchDisplayController)를 새 클래스 유형 (이 예제의 MySearchBar)으로 변경합니다.

+0

당신은 UISearchDisplayDelegate 메서드 중 하나가 스코프 바 숨기기를 무시할 수 있다고 생각합니다. 그러나 거기서 시도한 것은 아무것도 작동하지 않습니다. UISearchBar를 서브 클래 싱하면 작업이 수행됩니다. – dodgio

+4

처음에는이 기능이 작동하지만 검색 표시 줄을 클릭 한 다음 iOS7에서 검색을 취소하면 스코프 표시 줄이 숨겨집니다. UISearchDisplayDelegate가 숨 겼을 때 스코프 바를 다시 표시하기 위해 iOS7에서 코드를 작성하는 방법을 찾을 수 없습니다. 방법을 알고 있습니까? – msec

관련 문제