Bạn đúng là UISearchDisplayController đang quản lý hiệu ứng "mờ" mà bạn đang thấy.
Điều UISearchDisplayController đang làm là thêm UIControl làm phần phụ vào giao diện của searchContentsController (thuộc tính của UISearchDisplayController), có khả năng là bộ điều khiển xem chi tiết của bạn. UIControl này chỉ là một chế độ xem alpha với nền màu xám. Dường như nó có một trình xử lý sự kiện chạm bên trong kết thúc tìm kiếm khi khai thác.
Để hạn chế hiệu ứng mờ cho chế độ xem phụ của chế độ xem chi tiết, bạn cần thực hiện ba việc. (Tôi giả định chi tiết của bạn-xem-điều khiển được xác định thông qua một xib. Nếu không, các bước này có thể được thực hiện trong mã quá.)
1) thêm một UIViewController mới để chi tiết-view-controller xib. Đính kèm bộ điều khiển xem mới này vào một IBOutlet của bộ điều khiển xem chi tiết của bạn. Trong ví dụ của tôi, tôi gọi đây là "_searchAreaViewController". Đây là quan trọng, ngay cả khi bạn sẽ không bao giờ truy cập vào bộ điều khiển view (nhưng hãy nhớ, bạn sẽ phải phát hành nó tại một số điểm)
@interface DetailViewController : UIViewController <UIPopoverControllerDelegate, UISplitViewControllerDelegate, UITableViewDelegate, UITableViewDataSource> {
UIPopoverController *popoverController;
UIToolbar *toolbar;
id detailItem;
UILabel *detailDescriptionLabel;
IBOutlet UIViewController* _searchAreaViewController;
}
2) làm cho cái nhìn chứa cho khu vực tìm kiếm của bạn quan điểm của mới này bộ điều khiển xem. Để thực hiện việc này, hãy sử dụng Trình tạo giao diện để đặt một cửa sổ tham chiếu mới cho chế độ xem này bằng cách kéo lối ra tới searchAreaViewController và chọn cửa sổ "xem". Bạn phải có một khung nhìn có sẵn - nó phải là một phần phụ của khung nhìn chi tiết của bạn, và nó sẽ chứa UISearchBar và có khả năng là UITableView của bạn.
3) làm cho thuộc tính searchContentsController của UISearchDisplayController tham chiếu đến bộ điều khiển chế độ xem mới này thay vì chi tiết-view-controller. Điều này chỉ có thể được thực hiện thông qua giao diện Builder như tài sản là chỉ đọc (IB có một số phép thuật để làm cho công việc này?) Nếu bạn cần làm bước này thông qua mã bạn sẽ phải phân lớp UISearchDisplayController và trả về giá trị chính xác từ một ghi đè thuộc tính của "searchContentsController".
Tôi đã tạo một ứng dụng mẫu để minh họa điều này và dòng mã duy nhất tôi phải thêm vào mẫu SplitView là mẫu được liệt kê ở bước 1 ở trên. Mọi thứ khác chỉ là thêm các khung nhìn/bộ điều khiển và kết nối chúng đúng cách trong IB.
chúc may mắn!
Sau khi thực hiện điều đó, khu vực vẫn bị mờ ... Sự nghi ngờ duy nhất của tôi là ở bước số 2. Khi liên kết chế độ xem với bộ điều khiển xem, nó sẽ là ổ cắm cho cả bộ điều khiển xem chi tiết và searchAreaViewController. Đúng không? Nếu tôi xóa tham chiếu đến trình điều khiển chế độ xem chi tiết, ứng dụng sẽ gặp sự cố khi khởi động. –
Không, nó chỉ nên là chế độ xem cho "searchAreaViewController" mới. Khung nhìn này cần phải là một khung nhìn con của khung nhìn DetailViewController. Có phải đó là những gì bạn có? – TomSwift
Ở đây, tôi đã đăng một dự án mẫu cho bạn, tại đây: http://goo.gl/Gv1NH – TomSwift