【问题标题】:tvOS: A way to have UISearchController not appear as a button?tvOS:一种让 UISearchController 不显示为按钮的方法?
【发布时间】: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 界面逻辑的杂物(在我看来)。

标签: swift2 tvos uisearchcontroller apple-tv


【解决方案1】:

是不是我终于在 tvOS 开发者库里看到了这段话

所有 iOS 第一响应者机制都适用于 tvOS。这允许 开发人员呈现一个可见或隐藏的 UI,然后制作其中之一 文本字段通过调用 becomeFirstResponder 方法就可以了。此操作会导致文本字段 无需用户导航到 文本字段并单击它。

所以,添加

searchController.searchBar.becomeFirstResponder()

显示我希望用户开始使用的内联键盘。然而,在焦点引擎再次启动之前,必须按下遥控器上的菜单按钮。菜单按钮也会关闭键盘并且 searchBar 返回到它的按钮状态。

这是我第一个问题的答案。对第二个仍然一无所知。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-27
    • 1970-01-01
    • 1970-01-01
    • 2010-09-14
    • 2012-10-03
    • 1970-01-01
    相关资源
    最近更新 更多