gpt4 book ai didi

swift - 从一个 View 移动到另一个 View 时,tvOS 应用程序出现焦点问题

转载 作者:行者123 更新时间:2023-11-30 10:35:17 24 4
gpt4 key购买 nike

嘿,

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

其外观如下:View

左 View 是一个tableView右 View 是一个UIView,它有一个文本字段位于顶部。我希望当我从表格 View 转移到文本字段时。但现在这并没有发生。

我在 ma​​inController 上创建了一个 focusGuide,其中包含与 ma​​inController 具有相同 anchor 的两个 View ,但它不起作用。像这样:

 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]
}

最佳答案

我认为您应该使用另一个 UIFocusGuideUITableViewUITextField 之间切换焦点:

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]
}
}

关于swift - 从一个 View 移动到另一个 View 时,tvOS 应用程序出现焦点问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58183099/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com