这是我对 iPhone SDK 的最新问题。

我已经设置了 UISearchBar 及其委托(delegate)。
另外,当我加载 View 时,我调用

self.searchDisplayController.searchBar.showsScopeBar = YES;

这样,当我的 View 第一次呈现时,我会按预期看到范围栏。
但是如果在搜索栏内部触摸然后在它外面(或者即使执行搜索然后取消它),范围栏会再次隐藏。

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

非常感谢。

最佳答案

UISearchDisplayController 为您隐藏了范围栏。

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

@interface MySearchBar : UISearchBar {

}

@end

@implementation MySearchBar

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

@end

然后,在 Interface Builder 中,将 View 中的 Search Bar 的类(与 UISearchDisplayController 关联)更改为新的类类型——在本例中为 MySearchBar。

10-06 05:16