首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取WKInterfaceButton的触摸事件

如何获取WKInterfaceButton的触摸事件
EN

Stack Overflow用户
提问于 2018-12-20 13:17:50
回答 1查看 300关注 0票数 1

我有一个WKInterfaceButton,用来增加用户选择的权重的值。然而,默认的行为是每次用户按下按钮时,数量增加一,我希望达到这样的效果,只要用户保持按下按钮,数量应该增加,当用户举起手指时,数量的最终值应该分配给权重。

触摸事件似乎不能在watchOS上使用。我寻找了WKGestureRecognizer,但只有四个可用,其中没有一个是我想要的。我怎样才能实现这个行为呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-26 19:52:28

这听起来很愚蠢,但您可以使用WKLongPressGestureRecognizer来完成此操作。在接口构建器中添加WKLongPressGestureRecognizer,例如添加到WKInterfaceImage中。将WKLongPressGestureRecognizer的最小持续时间设置为0,如下面的截图所示。

现在,将该操作连接到InterfaceController中的操作。我使用一个计时器来触发递增,但您也可以使用perform(_ aSelector: Selector, with anArgument: Any?, afterDelay delay: TimeInterval)和一个标志(按下按钮)来实现这一点。

考虑到也会检测到移动,但这不会影响所需的功能。

代码语言:javascript
复制
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")
        }
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53862782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档