对 SwiftUI 中水平滚动视图内的列表不起作用的操作
Posted
技术标签:
【中文标题】对 SwiftUI 中水平滚动视图内的列表不起作用的操作【英文标题】:Actions not working on Lists inside horizontal scrollviews in SwiftUI 【发布时间】:2020-05-19 22:54:27 【问题描述】:我正在尝试制作一个其中嵌入了多个列表的水平滚动视图,问题是即使实现了删除方法,我也可以滚动列表或滚动视图,但我不能使用删除操作。
我想知道是否有什么办法可以克服这个问题,也许是当手指在单元格上时使滚动视图不可滚动,或者是否有更智能的选项。
代码如下:
var body: some View
ScrollView(.horizontal, showsIndicators: true)
HStack(alignment: .top, spacing: 60)
ForEach(data.trips[0].days) day in
List
Section
Text(String((day as Day).date))
ForEach(day.stops) stop in
Text((stop as Stop).title)
.onDelete(perform: self.delete)
.listStyle(GroupedListStyle())
.frame(width:800)
.background(Color.clear)
func delete(at offsets: IndexSet)
print(offsets)
当然,它在滚动视图中向左/向右滑动,在列表中向上/向下滑动
【问题讨论】:
可以考虑显式添加EditButton/EditMode。 【参考方案1】:您正在使用 ScrollView 和 List 等一系列内置便利,我认为没有任何方法可以通过仅使部分字段可滚动来选择性地覆盖它们的行为。
即使你确实一起破解了它,我认为这对用户来说真的很不直观。它将以一种根本不明显的方式混合 UI 滑动隐喻。
您必须为 HStack 实现自己的滚动小部件,或者添加一个删除接口。
【讨论】:
以上是关于对 SwiftUI 中水平滚动视图内的列表不起作用的操作的主要内容,如果未能解决你的问题,请参考以下文章
SHIFT +滚动到ScrollViewer UWP中水平滚动
堆栈小部件内的列表视图不起作用(滚动方向:Axis.vertical)
在 Table View Controller 中水平滚动 UITableView