1

我正在尝试记录用户在 2018 MacBook 触控板上执行的触摸和手指动作。

当我尝试测试 API 并在用户触摸触控板时打印到控制台时,我看不到任何输出。

如何监听触摸事件并从中获取数据?

我参考了处理触控板事件的文档。页面的处理多点触控事件部分说:

默认情况下,视图不接受触摸事件。要处理触摸事件,您的自定义视图必须首先调用setAcceptsTouchEvents:带有 YES 参数的 NSView 方法。

但是,setAcceptsTouchEvents 文档说该方法已被弃用。

当我尝试仅打印检测触摸的日志以测试 API 是否正常工作时,我没有看到任何控制台输出。这是我的代码:

import Cocoa

class ViewController: NSViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    override var representedObject: Any? {
        didSet {
        // Update the view, if already loaded.
        }
    }

    override func touchesBegan(with event: NSEvent) {
        print("touched!");
    }

}

如何让控制台语句打印一些东西?

4

1 回答 1

1

我正在玩这个,这就是我想出的。

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the //view.
    //view.acceptsTouchEvents = true; //deprecated but works.deprecated
    view.allowedTouchTypes = [NSTouch.TouchTypeMask.direct, NSTouch.TouchTypeMask.indirect];
}

然后,您可以在触摸处于不同阶段时覆盖这些功能,如问题中所述。

于 2019-12-02T18:22:38.120 回答