6

저는 UISearchBar와 함께 UISearchDisplayController를 사용하고 있습니다. 나는 IB 사용하여 내 응용 프로그램이 UISearchBar을 넣어 내가 얻을 :UISearchDisplayController는 자동으로 UIPopovercontroller를 생성하여 콘텐츠 검색 결과를 표시합니다. 그것을 기각하는 방법?

alt text http://img6.imageshack.us/img6/1985/screenshot20100701at156.png

미세 조정을 : 당신이 녹화 시작할 때, 결과 popovercontroller 마술 나타납니다 (나는 그것을 표시하기 위해 내 자신에 아무것도 쓰지 않았다!) 행이 결과 사이 클릭하면

다음, 나는이 단계에서 PopoverController 하지만을 기각 할, 나는 내 옆에 UIPopoverController의 인스턴스를 결코 다음 UISearchDisplayController 자동으로 캡슐화 된 행동이 있다면 것 같습니다 UIPopoverController 안에 searchContentsController을 래핑합니다. 모든 나는 그것이 사람이 "마술"창조 UIPopoverController에 대한 참조를 얻는 방법을 알고 있나요

을 :(기각이 UIPopoverController에 대한 참조를 얻을 수없는 것을 제외하고 아무것도하지 않고 완벽하게 작동하기 때문 정말 좋아요? (이

나는 (부모 속성을 통해) contentController에서 UIPopoverController에 대한 참조가있을 것이라고 생각했지만 포인터를 얻는 방법을 찾지 못했습니다. 그것을/:

+0

가 나는 또한 첫 번째로 반응과 검색 창을 사임하려고했으나 팝 오버가 계속 표시 :( – yonel

답변

11

[searchDisplayController setActive:NO animated:YES];이 작동하지 않습니까? 위의 해결의

+0

너도 알지? 이걸 시도해 보려고 생각했지만 그 전에는 누군가가 질문에 대답했는지 확인했다. n 네, 맞아요, 작동합니다! 마감일 직전에 +100을 제공하게되어 기쁩니다! : p – yonel

+1

기꺼이 도와 드리겠습니다. 나는 그것이 작동하는지 점검조차하지 않았지만 애플의 개발자 문서를 보았다. ;) – jrtc27

+0

고마워요! 이것은 완벽하게 작동했습니다! – ArtSabintsev

0

당신은 어떻게 당신이 hav에 대한 자세한 내용을 추가 할 수 있습니까? IB에서 UISearchDisplayController를 유선으로 연결 했습니까? iPad에서 UIPopoverController와 관련하여 특별한 작업을 수행하지 않으므로 searchContentsController를 UIPopoverController 컨트롤러로 설정했다고 가정합니다. 그렇다면 필요한 참조를 이미 가지고 있습니다. 일반적으로이보기를 닫을 필요는 없지만 검색을 취소 할 때 해고됩니다.

+0

UISearchDisplayController 특별한 아무것도 유선되지 않습니다 http://bit.ly/ BESjTT http://bit.ly/aG3qAY에서 유스 케이스를 분리 한 매우 기본적인 XCode 프로젝트를 업로드했습니다. UISearchDisplayController가 추가 된 Split 뷰 컨트롤러 프로젝트 예제 일뿐입니다.이 프로젝트에서는 UIPopoverController가 인스턴스화되지 않습니다./SearchContentController는 UIPopoverCOntroller가 아닌 UIViewController로 설정되어 있습니다 . – yonel

1

아무도 나를 위해 일하지,하지만 난이 그것을 해결 :

[self.searchDisplayController setActive:NO animated:YES]; 
    [searchBar becomeFirstResponder]; 

이 방법으로 커서가 필드에 남아 있지만 결과가 없을 때 팝 오버가 그라운드를 떠납니다.

전체 코드 :

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText { 
    if ([searchText isEqualToString:@""]) { 
     [self.searchDisplayController setActive:NO animated:YES]; 
     [searchBar becomeFirstResponder]; 
    } 
}