当我在Table中有按钮时,我试图理解焦点是如何工作的。
目标是创建一个包含自定义单元格的表格视图,其大小与表格视图大小相同(我希望当时只能看到一个单元格)。当按钮聚焦时,我想滚动(表视图自动执行),到下一个单元格并仅查看下一个单元格。 我通过在表格单元格中覆盖此方法确保按钮将处于焦点而不是表格视图单元格中:
override var canBecomeFocused: Bool{
return false
}
按钮是聚焦的,当我向上/向下滑动时,焦点在按钮之间移动而不是表格自动(非常成功)...但是,表格视图正在自动滚动,我想要理解为什么在某些情况下(当表和表格单元格大于360像素时)它滚动到下一个单元格,我只能看到下一个单元格(表格视图和相同大小的单元格),有时(当表和单元格小于360像素)表格视图滚动一点点,直到下一个单元格只显示按钮(意味着单元格未完全显示)
所以,我有:
单元格和表格视图单元格大小大于360,我们可以看到当按钮聚焦时,表格视图滚动到单元格的中心,我们只能看到1个单元格:
单元格和表格视图单元格大小比360小,我们可以看到当按钮被聚焦时,表格视图滚动到某个点,当按钮显示时
仅供参考:我认为按钮的大小不会影响滚动,只有表格视图和表格视图的单元格大小才会影响滚动。
有人吗?任何想法?
This is the test Project:为了更好地看到它,请将表格视图大小和单元格大小更改为小于360,并确保UIButton居中:Project
答案 0 :(得分:0)
您可以将这些方法放在UITableViewCell的子类中。见
override var preferredFocusEnvironments: [UIFocusEnvironment]{
// Condition
}
override func shouldUpdateFocus(in context: UIFocusUpdateContext) -> Bool {
// Condition
}
override func didUpdateFocus(in context: UIFocusUpdateContext, with coordinator: UIFocusAnimationCoordinator) {
// Condition
}
您可以在此链接中看到更多内容:enter link description here