
我有一个WKInterfaceButton,用来增加用户选择的权重的值。然而,默认的行为是每次用户按下按钮时,数量增加一,我希望达到这样的效果,只要用户保持按下按钮,数量应该增加,当用户举起手指时,数量的最终值应该分配给权重。
触摸事件似乎不能在watchOS上使用。我寻找了WKGestureRecognizer,但只有四个可用,其中没有一个是我想要的。我怎样才能实现这个行为呢?
发布于 2018-12-26 19:52:28
这听起来很愚蠢,但您可以使用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")
}
}https://stackoverflow.com/questions/53862782
复制相似问题