【发布时间】:2010-04-08 20:04:16
【问题描述】:
我有一个 UISearchBar 和 UISearchDisplayController,一切都很好,但我的范围选择器显示在文本字段旁边而不是它下方。我知道这是设备处于横向时的预期操作,但由于我在 UISplitViewController 的主视图中有 UISearchBar,它最终看起来像这样:
有没有办法强制范围栏在所有界面方向的文本字段下方显示(我知道这在 iPad 上的 Mail.app 中运行良好,所以它可能,但谁知道 Apple 是否决定隐藏选择这样做)
【问题讨论】:
-
我找到了一种方法,但它不是公共 API。 [self.searchDisplayController.searchBar setCombinesLandscapeBars:NO];确保在 searchDisplayController 的 searchBar 而不是 UISearchBar 本身上调用它。显然搜索显示控制器正在管理这个属性。
-
我遇到了同样的问题,setCombinesLandscapeBars:NO 确实解决了这个问题,但苹果的示例“TableSearch”在不使用该方法的情况下也得到了相同的结果。您找到其他解决方案了吗?
-
如果您没有被拒绝,您可以使用此代码,不会引发任何警告并且安全,以防苹果的工程师认为私有方法将不再可用。 if ([self.searchDisplayController.searchBar respondsToSelector:@selector(setCombinesLandscapeBars:)]) { objc_msgSend(self.searchDisplayController.searchBar, @selector(setCombinesLandscapeBars:), NO );}
-
有人用这种方法逃脱了吗?
标签: iphone cocoa-touch scope uisearchbar uisearchdisplaycontroller