【问题标题】:tvOS navigating through ui elementstvOS 浏览 ui 元素
【发布时间】:2016-04-08 03:55:49
【问题描述】:

我目前正在为 tvOS 开发,我添加了一个 UISegmentedControl,它会由 tvOS 焦点引擎自动聚焦。当我添加了UIButton 时,这成为了第一个焦点项目。

如何设置第一个焦点项目并在它们之间导航?

【问题讨论】:

    标签: uibutton uisegmentedcontrol tvos apple-tv


    【解决方案1】:

    向您的视图控制器添加一个只读的preferredFocusedView 属性,该属性返回您想要开始聚焦的视图:

    override weak var preferredFocusedView: UIView? {
        get {
            return segmentedControl
        }
    }
    

    【讨论】:

    • 我将如何“滑动”到另一个 UI 元素?例如,preferredFocusedView 是UISegmentedControl,我想“滑动”到UIButton
    • 焦点引擎应该为你处理这个问题。但是,在实践中,我发现当视图不在水平或垂直方向上时会出现问题。您可以通过添加多个 UIFocusGuide 对象来指向其他视图来帮助焦点引擎。它们的放置位置取决于您的布局。
    • 我在UIFocusGuide上找到了一个教程,但我得到了意想不到的结果。设置 focusGuide layoutAnchors 时,UIFocusGuide 立即放置在我的 UISegmentedControl 的右侧。但它应该正好在 UISegmentedControl 下方和我的 UIButton 的右侧。
    • 使用此代码时会发生这种情况:self.view.addLayoutGuide(focusGuide)self.focusGuide.leftAnchor.constraintEqualToAnchor(self.choirSwitch.leftAnchor).active = trueself.focusGuide.topAnchor.constraintEqualToAnchor(self.playButton.topAnchor).active = trueself.focusGuide.widthAnchor.constraintEqualToAnchor(self.choirSwitch.widthAnchor).active = trueself.focusGuide.heightAnchor.constraintEqualToAnchor(self.playButton.heightAnchor).active = true
    • 这就是你实际上告诉它要做的事情。尝试将 focusGuide 的顶部锚点更改为按钮的底部锚点以使其位于下方。您可以尝试的另一个技巧是在 IB 中添加一个清晰的视图,您希望焦点指南所在的位置,并改用它的锚点。
    猜你喜欢
    • 2022-09-25
    • 2018-05-11
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    • 2011-08-03
    • 2016-10-30
    相关资源
    最近更新 更多