我有一个按钮,当它被按下时,它会执行一些操作。但我想修改相同的 Button 以检测更长的按下时间,并执行一组不同的过程。如何修改此代码以检测长按?
Button(action: {
// some processes
}) {
Image(systemName: "circle")
.font(.headline)
.opacity(0.4)
}
Run Code Online (Sandbox Code Playgroud)
这是可能的变体(使用 Xcode 11.2 / iSO 13.2 测试)。
Button("Demo") {
print("> tap")
}
.simultaneousGesture(LongPressGesture().onEnded { _ in
print(">> long press")
})
Run Code Online (Sandbox Code Playgroud)
丹尼尔伍德的评论在这两个陈述中都是正确的。首先,它是最干净的解决方案。对于第二个,有一个简单的解决方法。
struct ContentView: View {
@State private var didLongPress = false
var body: some View {
Button("Demo") {
if self.didLongPress {
self.didLongPress = false
doLongPressThing()
} else {
doTapThing()
}
}.simultaneousGesture(
LongPressGesture().onEnded { _ in self.didLongPress = true }
)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1752 次 |
| 最近记录: |