"디밍"효과를 관리하는 UISearchDisplayController가 맞습니다.
UISearchDisplayController가 수행하는 작업은 detailview 컨트롤러 일 수있는 searchContentsController (UISearchDisplayController 속성)의 뷰에 UIControl을 하위 뷰로 추가하는 것입니다. 이 UIControl은 회색 배경의 알파보기입니다. 그것은 도청 될 때 검색을 끝내는 터치 업 내부 이벤트 처리기가있는 것 같습니다.
세부보기의 하위보기에 디밍 효과를 제한하려면 세 가지 작업을 수행해야합니다. (당신의 디테일 뷰 컨트롤러가 xib를 통해 정의되었다고 가정하고 있습니다. 그렇지 않다면이 단계는 코드에서도 가능합니다.) 1) 새로운 UIViewController를 detail-view-controller xib에 추가하십시오. 이 새로운 뷰 컨트롤러를 디테일 뷰 컨트롤러의 IBOutlet에 연결하십시오. 나의 예제에서는 이것을 "_searchAreaViewController"라고 부른다. 이것은 당신이 늘 이제까지 뷰 컨트롤러에 액세스 할 경우에도)
@interface DetailViewController : UIViewController <UIPopoverControllerDelegate, UISplitViewControllerDelegate, UITableViewDelegate, UITableViewDataSource> {
UIPopoverController *popoverController;
UIToolbar *toolbar;
id detailItem;
UILabel *detailDescriptionLabel;
IBOutlet UIViewController* _searchAreaViewController;
}
이 검색 영역이 새의 뷰를 포함하는 뷰를 만드는 (하지만 기억, 당신은 어떤 시점에서 그것을 해제해야합니다), 중요하다 뷰 컨트롤러. 이렇게하려면 인터페이스 빌더를 사용하여 콘센트를 searchAreaViewController로 드래그하고 "보기"콘센트를 선택하여이 뷰에 대한 새로운 참조 콘센트를 설정하십시오. 포함 된보기가 있어야합니다. 세부보기의 하위보기 여야하며 UISearchBar 및 가능성있는 UITableView가 있어야합니다.
3) UISearchDisplayController의 searchContentsController 속성을 detail-view-controller 대신이 새보기 컨트롤러를 참조하십시오. 이것은 Interface Builder를 통해서만 할 수 있습니다. 속성은 읽기 전용입니다 (IB가이 작업을 수행 할 수있는 마법이 있습니까?) 코드를 통해이 단계를 수행해야한다면 UISearchDisplayController를 서브 클래스 화하고 a에서 올바른 값을 반환해야합니다. "searchContentsController"의 속성 재정의입니다.
이것을 보여주기 위해 샘플 앱을 만들었고 SplitView 템플릿에 추가해야하는 유일한 코드 줄은 위의 1 단계에 나열된 코드입니다. 다른 모든 것은보기/컨트롤러를 추가하고 IB에서 제대로 연결하는 것이 었습니다.
행운을 빈다!
이 작업을 수행 한 후에도 영역이 여전히 희미합니다 ... 의심스러운 부분은 2 번 단계입니다. 뷰 컨트롤러에 뷰를 연결하면 디테일 뷰 컨트롤러와 searchAreaViewController의 콘센트가 연결됩니다. 그 맞습니까? 자세히보기 컨트롤러에 대한 참조를 제거하면 시작시 응용 프로그램이 중단됩니다. –
아니요, 새 "searchAreaViewController"에 대한보기 여야합니다. 이 뷰는 DetailViewController 뷰의 하위 뷰 여야합니다. 그게 네가 가진거야? – TomSwift
여기 샘플 프로젝트를 게시했습니다. http://goo.gl/Gv1NH – TomSwift