如何在 SwiftUI 视图中添加轻击手势识别器、长按手势识别器以及拖动手势识别器

18 min read

在 SwiftUI 视图中添加手势识别器可以通过使用 gesture 修饰符来实现。

轻击手势识别器:

struct ContentView: View {
    var body: some View {
        Text("Tap me!")
            .onTapGesture {
                print("Tapped!")
            }
    }
}

长按手势识别器:

struct ContentView: View {
    var body: some View {
        Text("Hold me!")
            .onLongPressGesture {
                print("Held!")
            }
    }
}

拖动手势识别器:

struct ContentView: View {
    @State private var position = CGPoint(x: 100, y: 100)
    
    var body: some View {
        Circle()
            .frame(width: 50, height: 50)
            .position(position)
            .gesture(
                DragGesture()
                    .onChanged { value in
                        self.position = value.location
                    }
            )
    }
}

在上面的例子中,我们首先用 @State 属性包装一个 CGPoint,用来表示圆形视图的位置。然后,我们创建一个圆形视图,并将其位置设置为 position。接下来,我们添加了一个拖动手势识别器,并将其处理函数与 position 属性相关联,以此来实现拖动圆形视图的功能。