2010-08-09 54 views
7

這是我的iPhone SDK的最新問題。如何讓UISearchBar範圍欄始終可見?

我有一個UISearchBar和它的代表都設置好了。 此外,當我打開我的看法,我叫

self.searchDisplayController.searchBar.showsScopeBar = YES; 

這樣,當我的看法是第一次提出,我看到的範圍吧,符合市場預期。 但是,如果觸摸搜索欄內部,然後觸及它外面(或者即使執行搜索然後取消搜索),範圍欄會再次隱藏。

所以我的問題是:是否有可能讓範圍欄始終可見?即使執行搜索後?

非常感謝。

回答

10

UISearchDisplayController爲您隱藏範圍欄。

解決這個問題的辦法是子類的UISearchBar和覆蓋setShowsScopeBar執行:

@interface MySearchBar : UISearchBar { 

} 

@end 

@implementation MySearchBar 

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

@end 

然後,在界面生成器,更改類的搜索欄,你有你的觀點(即與關聯UISearchDisplayController)添加到新的類類型 - MySearchBar中。

+0

你會認爲一個UISearchDisplayDelegate方法會允許你重寫隱藏範圍欄的地方 - 但我在那裏試過的東西都不會起作用。繼承UISearchBar可以完成這項工作。 – dodgio 2011-11-22 19:50:54

+4

雖然這個工作起初,在點擊searchBar後,取消iOS7中的搜索,然後隱藏範圍欄。我找不到在iOS7中編寫代碼以在UISearchDisplayDelegate隱藏後重新顯示範圍欄的方法。你知道一種方式嗎? – msec 2014-01-11 00:35:03