我想做一个控制计数器的按钮。如果你点击它,计数器会增加1。但是如果你点击并按住它,我想让计数器在你按住它的时候每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)")
}
}
然后isDetectingLongPress
在一秒后变为true,然后立即变为false,并且onEnded
中的print也在1秒后被调用。
我希望有一种方法可以在手指按下视图的同时不断调用代码来不断更新计数器--而不仅仅是在检测到长时间按下后一次。
2条答案
按热度按时间3okqufwl1#
使用以下组合来跟踪连续按下
使用Xcode 11.4 / iOS 13.4进行测试
zvms9eto2#
DragGesture
具有onChanged
和onEnded
。只需将此添加到您的
View
。您可以将其作为
simultaneousGesture
添加到Button
。您可以使用ViewModifier来美化this文章。