SwfitUI列表使滚动被禁用

有没有办法使SwiftUI中的列表不可滚动?

就像我们有

  

tableView.isScrollEnabled

WLKing 回答:SwfitUI列表使滚动被禁用

虽然使用VStack + ForEach可以解决问题,但缺点之一是当单击一行时,单击反馈不再是您期望的表格视图(背景不会突出显示),因此它可能并不是基于UX期望的合适解决方案。

另一种方法是使用此第三方库:

https://github.com/siteline/SwiftUI-Introspect

然后您就可以

List {
    // ...
}
.introspectTableView { tableView in
                         tableView.isScrollEnabled = false
                     }
,

使用List而不是使用可滚动的ForEach

ForEach默认情况下不可滚动。

以下是使用ForEach

的示例
struct ContentView: View {
    let colors: [Color] = [.red,.green,.blue]

    var body: some View {
        VStack {
            ForEach(colors,id: \.self) { color in
                Text(color.description.capitalized)
                    .padding()
                    .background(color)
            }
        }
    }
}

here可以找到ForEach的好资源,here可以找到{{3}}的好资源。

,

我很确定这也会禁用内容,但是您可以:

List {
    // ...
}.disabled(true)

SwiftUI中非常缺少ScrollView API,因此您可能需要使用UIViewRepresentable

,

这是我的扩展程序,用于在列表上禁用滚动。

extension View {
    
    func hasScrollEnabled(_ value: Bool) -> some View {
        self.onAppear {
            UITableView.appearance().isScrollEnabled = value
        }
    }
}

示例:

List {
    ...
}.hasScrollEnabled(false)
,

简化YannSteph的答案:

List {
    ...    
}
.onAppear {
    UITableView.appearance().isScrollEnabled = false
}
,

这将禁用当前列表膨胀中的所有子视图移动

 List {
 // ...
 }.moveDisabled(true)
本文链接:https://www.f2er.com/3110463.html

大家都在问