0
當我在IB(Xcode 5)中將UISearchDisplayController添加到顯示在UINavigationController中的UIViewController並按下搜索欄時,搜索欄將被黑色半透明視圖覆蓋。UISearchDisplayController怪異行爲(視頻)
下面是視頻:http://quick.as/ezrc7bq
我還沒有觸及任何代碼,所以我不知道什麼是對那裏發生的。
當我在IB(Xcode 5)中將UISearchDisplayController添加到顯示在UINavigationController中的UIViewController並按下搜索欄時,搜索欄將被黑色半透明視圖覆蓋。UISearchDisplayController怪異行爲(視頻)
下面是視頻:http://quick.as/ezrc7bq
我還沒有觸及任何代碼,所以我不知道什麼是對那裏發生的。
這實際上是iOS UISearchBarDisplayController中的一個錯誤(當在UINavigationController中使用時)。默認行爲是突出顯示文本框,其餘視圖變暗,但此暗視圖框架不考慮導航欄高度。要解決這個問題
最簡單的方法是實現搜索欄委託
- (void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller { self.navigationController.navigationBarHidden = YES; } - (void) searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller{ self.navigationController.navigationBarHidden = NO; }
其他替代方案包括修改搜索欄的框架
- (void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller { // animate the search bar to the top ie. y=0 [UIView animateWithDuration:0.25f animations:^{ CGRect frame = controller.searchBar.frame; frame.origin.y = 0; controller.searchBar.frame = frame; }]; }
謝謝你的視頻! – Cyprian