我有一个WKInterfaceButton,用于增加用户选择的重量值。但是默认行为是每次用户按下按钮时数量都会增加一,我想要达到这样的效果:只要用户按住按钮,数量就会增加,而当用户抬起手指时,数量的最终值会增加应该分配给权重。
触摸事件似乎在watchOS上不可用。我寻找了WKGestureRecognizer,但其中只有四个可用,但没有一个适合我的目的。我该如何实现这种行为?
答案 0 :(得分:2)
听起来很傻,但是您可以使用WKLongPressGestureRecognizer
来做到这一点。
在“界面”构建器中,添加一个WKLongPressGestureRecognizer
,例如到WKInterfaceImage
。如下面的屏幕截图所示,将“最小持续时间”从WKLongPressGestureRecognizer
设置为0。
现在将动作连接到InterfaceController中的动作。我正在使用计时器来触发增量,但是您也可以使用perform(_ aSelector: Selector, with anArgument: Any?, afterDelay delay: TimeInterval)
和一个标志(按下按钮)来完成此操作。
考虑也可以检测到移动,但这不会影响所需的功能。
var gestureTimer:Timer?
@IBAction func gesture(_ sender: WKLongPressGestureRecognizer) {
switch sender.state {
case .began:
print("began")
gestureTimer = Timer.scheduledTimer(withTimeInterval: 0.2, repeats: true, block: { (timer) in
print("do something")
})
case .cancelled, .ended:
print("other")
if let timer = gestureTimer {
timer.invalidate()
gestureTimer = nil
}
default:
print("default")
}
}