我正在尝试制作一个控制计数器的按钮。如果你点击它,计数器就会加一。但是,如果您点击并按住它,我希望在您按住它时计数器每 n 秒增加 1,并继续这样做,直到您松开为止。
如果我使用如下代码:
@GestureState var isDetectingLongPress = false
var plusLongPress: some Gesture {
LongPressGesture(minimumDuration: 1)
.updating($isDetectingLongPress) { currentstate, gestureState, _ in
gestureState = currentstate
}
.onEnded { finished in
print("LP: finished \(finished)")
}
}
Run Code Online (Sandbox Code Playgroud)
isDetectingLongPress一秒后变为 true,然后立即变为 false 。onEnded1 秒后也会调用print in 。
我想要某种方法来继续调用代码以在手指按下视图时不断更新计数器 - 而不仅仅是在检测到长按后一次。
使用以下组合来跟踪连续按下
使用 Xcode 11.4 / iOS 13.4 进行测试
@GestureState var isLongPress = false // will be true till tap hold
var plusLongPress: some Gesture {
LongPressGesture(minimumDuration: 1).sequenced(before:
DragGesture(minimumDistance: 0, coordinateSpace:
.local)).updating($isLongPress) { value, state, transaction in
switch value {
case .second(true, nil):
state = true
// side effect here if needed
default:
break
}
}
}
Run Code Online (Sandbox Code Playgroud)
DragGesture有onChanged和onEnded.
只需将其添加到您的View.
@State private var isPaused = false
.gesture(
DragGesture(minimumDistance: 0)
.onChanged({ _ in
isPaused = true
})
.onEnded({ _ in
isPaused = false
})
)
Run Code Online (Sandbox Code Playgroud)
您可以将其作为 a 添加simultaneousGesture到 a Button。
你可以从这篇文章中使用一个ViewModifier来美化它。
| 归档时间: |
|
| 查看次数: |
2368 次 |
| 最近记录: |