tvOS:一种让 UISearchController 不显示为按钮的方法?
Posted
技术标签:
【中文标题】tvOS:一种让 UISearchController 不显示为按钮的方法?【英文标题】:tvOS: A way to have UISearchController not appear as a button? 【发布时间】:2016-08-08 13:49:52 【问题描述】:这段代码
var searchController: UISearchController!
@IBOutlet weak var collectionView: UICollectionView!
override func viewDidLoad()
super.viewDidLoad()
searchController = UISearchController(searchResultsController: nil)
searchController.searchResultsUpdater = self
searchController.obscuresBackgroundDuringPresentation = false
view.addSubview(searchController.searchBar)
getItems()
产生这个: Screeshot1
请注意,searchBar 显示为卡在左上角的按钮(因为这是一个选项卡式应用程序,它在第一次出现时显示在选项卡栏下方。“按钮”按钮用于接收焦点以进行测试)。
这是按下按钮后的样子:Screenshot2
第二张图片显示了我希望搜索选项卡打开时的外观,以及我认为它在 tvOS 中的外观。
如何让 searchController 像第二个屏幕截图中那样显示?许多 tvOS 应用程序都这样做,所以我知道这一定是可能的。我已经仔细阅读了文档,但我一定漏掉了什么。
一个相关的问题是下面的collectionView 不会从searchController 获得焦点。必须使用远程菜单按钮返回以使 collectionView 获得焦点。
当视图出现时,如何让 searchController 像第二个屏幕截图中那样显示?
如何让 collectionView 从 searchController 获得焦点,而不必返回标签栏?
【问题讨论】:
添加self.searchController.searchBar.frame = CGRectMake(960-(self.searchController.searchBar.frame.size.width/2), 200, self.searchController.searchBar.frame.size.width, 44.0)
会从 tabBar 下取出按钮,但生成的 UI 是一个破坏 tvOS 界面逻辑的杂物(在我看来)。
【参考方案1】:
是不是我终于在 tvOS 开发者库里看到了这段话
所有 ios 第一响应者机制都适用于 tvOS。这允许 开发人员呈现一个可见或隐藏的 UI,然后制作其中之一 文本字段通过调用 becomeFirstResponder 方法就可以了。此操作会导致文本字段 无需用户导航到 文本字段并单击它。
所以,添加
searchController.searchBar.becomeFirstResponder()
显示我希望用户开始使用的内联键盘。然而,在焦点引擎再次启动之前,必须按下遥控器上的菜单按钮。菜单按钮也会关闭键盘并且 searchBar 返回到它的按钮状态。
这是我第一个问题的答案。对第二个仍然一无所知。
【讨论】:
以上是关于tvOS:一种让 UISearchController 不显示为按钮的方法?的主要内容,如果未能解决你的问题,请参考以下文章