对 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 中水平滚动视图内的列表不起作用的操作的主要内容,如果未能解决你的问题,请参考以下文章

IOS中水平滚动视图问题内的滑块

SHIFT +滚动到ScrollViewer UWP中水平滚动

堆栈小部件内的列表视图不起作用(滚动方向:Axis.vertical)

在 Table View Controller 中水平滚动 UITableView

UITableView 中水平 UICollectionView 的表格视图单元格大小

word 中水平滚动条与垂直滚动条怎样设置与取消??