I try to add action when a tap gesture start and end but its not work !!! and bellow the example code.
@State private var opacity = 1.0
var body: some View {
Image(systemName: "plus.square.on.square")
.opacity(opacity)
.onTapGesture {
opacity = 0.2
}
.gesture(
TapGesture()
.onEnded({ _ in
opacity = 1.0
})
)
}
@TusharSharma is very close except for when using onLongPressGesture
for detecting precisely the start and end of the gesture, only the onPressingChanged
block matters.
This is a working example based on the code in question:
var body: some View {
Image(systemName: "plus.square.on.square")
.opacity(opacity)
.onLongPressGesture(minimumDuration: .infinity) {
// Do nothing as an action, only the state change matters.
} onPressingChanged: { starting in
withAnimation { opacity = starting ? 0.2 : 1.0 }
}
}
@State
private var opacity = 1.0
(The withAnimation
part is optional, but I thought you'd want it for your example.)
minimumDuration: .infinity
"holds" opacity on 0.2 for the entire duration of time while the user holds the press.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With