如何让UISearchBar范围栏始终可见?

Alo*_*ver 7 iphone ios4

这是我最新的iPhone SDK问题.

我有一个UISearchBar和它的代表都设置好了.另外,当我加载我的视图时,我会打电话

self.searchDisplayController.searchBar.showsScopeBar = YES;
Run Code Online (Sandbox Code Playgroud)

这样,当我的视图首次出现时,我会看到范围栏,如预期的那样.但是如果触摸搜索栏内部然后触摸它(或者即使执行搜索然后取消它),范围栏也会再次隐藏.

所以我的问题是:是否可以让范围栏始终可见?即使在进行搜索之后?

非常感谢.

Tom*_*ift 10

UISearchDisplayController正在为您隐藏范围栏.

解决这个问题的方法是继承UISearchBar并覆盖setShowsScopeBar的实现:

@interface MySearchBar : UISearchBar {

}

@end

@implementation MySearchBar

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

@end
Run Code Online (Sandbox Code Playgroud)

然后,在Interface Builder中,将视图中的搜索栏(与UISearchDisplayController关联)的类更改为新类类型 - 本示例中的MySearchBar.

  • 虽然这最初起作用,但在点击searchBar然后在iOS7中取消搜索后,隐藏范围栏.在UISearchDisplayDelegate隐藏它之后,我找不到在iOS7中对其进行编码以重新显示范围栏的方法.你知道吗? (5认同)