ios - SwiftUI 中 ScrollView 下的按钮

标签 ios swift button swiftui uiscrollview

我有一个 ScrollViewButton 之上因为我想要ScrollView的内容当它们滚动时移动到按钮的顶部。但是,目前这意味着按钮不起作用,我认为是因为 ScrollView 正在处理触摸事件。有没有办法让按钮在 SwiftUI 中工作?

struct Test: View {
    @State var pressed:Bool = false
    
    var body: some View {
        ZStack {
            VStack {
                Button(action: {
                    self.pressed = true
                }) {
                    Text("Button")
                        .padding(20)
                        .accentColor(pressed ? Color.green : Color.red)
                }
                
                Spacer()
            }
            
            ScrollView {
                Spacer()
                    .frame(height:60)
                
                Color.gray
                    .frame(height:200)
                    .padding(10)
                
                Color.gray
                    .frame(height:200)
                    .padding(10)
            }
        }
    }
}
Button and 3 gray rectangles vertically laid out

最佳答案

你必须把按钮放在最后,这样它就像这样“超过” ScrollView :

struct ContentView: View {
    @State var pressed:Bool = false

    var body: some View {
        ZStack {
            ScrollView {
                Spacer()
                    .frame(height:60)

                Color.gray
                    .frame(height:200)
                    .padding(10)

                Color.gray
                    .frame(height:200)
                    .padding(10)

                Color.gray
                    .frame(height:200)
                    .padding(10)

                Color.gray
                    .frame(height:200)
                    .padding(10)

                Color.gray
                    .frame(height:200)
                    .padding(10)

                Color.gray
                    .frame(height:200)
                    .padding(10)
            }

            VStack {
                Button(action: {
                    self.pressed = true
                    print("tapped")
                }) {
                    Text("Button")
                        .padding(20)
                        .accentColor(pressed ? Color.green : Color.red)
                }

                Spacer()
            }


        }
    }
}

关于ios - SwiftUI 中 ScrollView 下的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59236793/

相关文章:

swift - 获取完整路径或转换为完整路径

javascript - 为什么我的显示隐藏按钮需要第一次双击

ios - Pod 安装命令出错

使用加速度计(和陀螺仪)的 iOS 手势识别

ios - Parse.com 关系对象指定顺序

arrays - 转换可变数组在 swift 中仍然被认为是不可变的

json - 快速解析响应时出现问题?

java - 根据另一个按钮宽度灵活的按钮宽度

Android:单击按钮时出现 toast

ios - 无法使用类型为 'Double' 的参数列表调用类型为 '(Range<Double>)' 的初始值设定项