按钮不可聚焦,因为它遥不可及 - tvOS Swift

Posted

技术标签:

【中文标题】按钮不可聚焦,因为它遥不可及 - tvOS Swift【英文标题】:Button is not focusable because it is out of reach - tvOS Swift 【发布时间】:2016-10-13 16:17:54 【问题描述】:

我正在创建一个 tvOS 电影浏览器。此视图包含电影描述并显示 4 个内容:电影封面图像、电影描述文本、观看按钮和电影演员的集合视图(蓝色框)。 PreferredFocusView 设置为 watchButton。但是,一旦我将焦点切换到其下方的集合视图,如果演员表太短,我将无法再次关注手表按钮。

The watch button is focusable here since the cast extends to just below the button

The watch button IS NOT focusable here

最终,我知道我可以通过重新排列 UI 来解决这个问题,让手表按钮直接位于第一个演员的上方,但我想知道是否有实际的方法来实现我想要的原始外观。

谢谢!

【问题讨论】:

【参考方案1】:

为了解决这个问题,我在视图控制器中添加了焦点指南。

private var focusGuide: UIFocusGuide!

在 viewDidLoad 中:

// Create focus guide
focusGuide = UIFocusGuide()
view.addLayoutGuide(focusGuide)

focusGuide.leftAnchor.constraint(equalTo: header.imageView.leftAnchor).isActive = true
focusGuide.bottomAnchor.constraint(equalTo: header.imageView.bottomAnchor).isActive = true
focusGuide.widthAnchor.constraint(equalTo: header.imageView.widthAnchor).isActive = true
focusGuide.heightAnchor.constraint(equalTo: header.watchButton.heightAnchor).isActive = true

【讨论】:

以上是关于按钮不可聚焦,因为它遥不可及 - tvOS Swift的主要内容,如果未能解决你的问题,请参考以下文章

表单控件不可聚焦

tvOS SpriteKit 应用程序中的菜单按钮

name='AdjustmentBuyerPrice' 的无效表单控件不可聚焦

WPF 全透明 + 不可点击

带有名称的无效表单控件...不可聚焦

name='' 的无效表单控件不可聚焦。没有任何必需或隐藏的输入