从一个视图移动到另一个视图时,将问题集中在 tvOS 应用程序上



>Hy,

我在 tvOS 上有一个视图,其中包含两个不同大小的视图。当我从左侧视图移动时,我想聚焦左侧视图中的项目,但这并没有发生。

下面是它的外观:查看

左视图是视图,右视图是顶部有一个文本字段UIView我希望当我从表视图移动到专注于文本字段时。但现在它没有发生。

我在主控制器上创建了一个焦点指南,其中包含与主控制器具有相同锚点的两个视图,但它不起作用。喜欢这个:

private func setupFocusGuide(){
self.sideFocusGuide = UIFocusGuide()
view.addLayoutGuide(self.sideFocusGuide!)
self.sideFocusGuide?.topAnchor.constraint(equalTo: self.mainView.topAnchor, constant: 0).isActive = true
self.sideFocusGuide?.bottomAnchor.constraint(equalTo: self.mainView.bottomAnchor, constant: 0).isActive = true
self.sideFocusGuide?.leftAnchor.constraint(equalTo: self.mainView.leftAnchor).isActive = true
self.sideFocusGuide?.rightAnchor.constraint(equalTo: self.mainView.rightAnchor).isActive = true
self.sideFocusGuide?.preferredFocusEnvironments = [self.rightView]
}

我认为您应该使用另一种在UITableViewUITextField之间切换焦点的UIFocusGuide

private var focusGuideTextFieldAndTableView: UIFocusGuide!

初始化它:

focusGuideTextFieldAndTableView = UIFocusGuide()
view.addLayoutGuide(focusGuideTextFieldAndTableView)
focusGuideTextFieldAndTableView.leftAnchor.constraint(equalTo: tableView.rightAnchor).isActive = true
focusGuideTextFieldAndTableView.topAnchor.constraint(equalTo: tableView.topAnchor).isActive = true
focusGuideTextFieldAndTableView.bottomAnchor.constraint(equalTo: tableView.bottomAnchor).isActive = true
focusGuideTextFieldAndTableView.rightAnchor.constraint(equalTo: textField.leftAnchor).isActive = true
focusGuideTextFieldAndTableView.preferredFocusEnvironments = [textField]

didUpdateFocus(in:with:)中的切换preferredFocusEnvironments

override func didUpdateFocus(in context: UIFocusUpdateContext, with coordinator: UIFocusAnimationCoordinator) {
super.didUpdateFocus(in: context, with: coordinator)
if context.nextFocusedView == textField {
focusGuideTextFieldAndTableView.preferredFocusEnvironments = [tableView]
} else if context.previouslyFocusedView == textField {
focusGuideTextFieldAndTableView.preferredFocusEnvironments = [textField]
}
}

最新更新