如何在 tvOS 中使 SwiftUI 列表可滚动

Posted

技术标签:

【中文标题】如何在 tvOS 中使 SwiftUI 列表可滚动【英文标题】:How to make a SwiftUI list scrollable in tvOS 【发布时间】:2019-11-19 10:07:05 【问题描述】:

我有一个带有内容的 List,当我构建到 Apple Tv 时,我无法滚动到 List 的底部。

我尝试在 List 行上设置焦点,但似乎无法滚动列表。我还用ScrollView 替换了List,但无济于事。

List(self.someData)  data in
     SomeListRow(data: data)

.shadow(radius: 5)
.focusable(true)

List(self.someData)  data in
     SomeListRow(data: data)
      .focusable(true)


.shadow(radius: 5)

【问题讨论】:

【参考方案1】:

tvOS 上的 SwiftUI 有一个错误,如果您在某物上设置阴影,则其中的任何组件都不会接收用户输入事件,例如焦点。不过有一个简单的解决方法,只需在背景层上设置阴影即可。

.background(
    Color.white
        .shadow(radius: 5)
)

【讨论】:

【参考方案2】:

所以我在SomeListRow 中添加了焦点,但没有用,但删除List 上的.shadow 使它工作。一定是修饰符的顺序(还在研究中)。

【讨论】:

以上是关于如何在 tvOS 中使 SwiftUI 列表可滚动的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI - tvOS 上的列表 - 顶部渐变

如何在 SwiftUI 中使整个列表行成为 NavigationLink

如何在具有用于滑动的 ItemTouchHelper 的 RecyclerView 中使 TextView 可滚动?

如何在 SwiftUI 中使列表更宽?

当列溢出数据时,如何在jquery数据表中使单列可滚动?

在 SwiftUI 中使列表行可选