在 SwiftUI 中,我们可以使用 highPriorityGesture() 方法来为一个视图添加一个高优先级的手势,以强制其在其他手势之前被识别。
示例代码:
struct ContentView: View {
@State private var isTapped = false
var body: some View {
VStack {
Circle()
.fill(isTapped ? Color.red : Color.blue)
.frame(width: 100, height: 100)
.highPriorityGesture(TapGesture()
.onEnded { _ in
self.isTapped.toggle()
}
)
.gesture(DragGesture()
.onChanged { _ in
self.isTapped = false
}
)
}
}
}
在这个示例中,我们创建了一个 Circle 视图,并为其添加了一个可拖拽的手势和一个可单击的手势,并使用 highPriorityGesture() 方法将单击手势设置为高优先级。这样,无论用户首先执行的是哪一个手势,都会先识别单击手势,并执行单击手势的操作。
请注意,当手势之间存在冲突时,系统会优先识别高优先级的手势。因此,在使用 highPriorityGesture() 方法时,我们需要特别小心,确保我们的手势不会与其他手势冲突,并且确保我们的应用程序的用户体验不会因此变得混乱。