swift - 无法获取 locationInView : for this type of NSTouch assertion error when trying to retrieve location

标签 swift macos scenekit macbookpro-touch-bar

我试图在用户单击特定的 SCNNode 后检索鼠标位置。我最终想要执行 HitTest 来确定单击了哪个 SCNNode。我有以下代码,但是一旦运行该项目,我就会收到一个断言错误,指出:“无法获取 locationInView:对于这种类型的 NSTouch”。任何帮助将不胜感激。

override func touchesBegan(with event: NSEvent) {
    let touch = event.touches(for: self.view)
    if #available(OSX 10.12.2, *) {
        let location = touch.first?.location(in: self.view)
        let hitResults = sceneView.hitTest(location!, options: nil)

    } else {
        // Fallback on earlier versions
    }
}

最佳答案

-locationInView:仅适用于 type 的触摸NSTouchTypeDirect 。如果您的 Mac 带有 Touch Bar,则按下它会导致出现类型为 NSTouchTypeIndirect 的触摸事件。它在屏幕上没有位置。

关于swift - 无法获取 locationInView : for this type of NSTouch assertion error when trying to retrieve location,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48737779/

相关文章:

linux - 在 Unix/macOS 系统事件上触发脚本

swift - SCNCamera 限制弧球旋转

swift - 我们可以将SceenKit场景保存为Autocad文件格式(.DXW或.DFX)

swift - 从未调用过 NEVPNManager saveToPreferences/loadFromPreferences 回调

ios - 核心数据设计 : better 1 model with 2 stores or 2 models and 2 stores?

ios - Swift 5 和 Storyboard UITableViewDelegate 不显示自定义或任何其他样式内容

mysql - 错误 2002 (HY000) : Can't connect to local MySQL server through socket '/var/mysql/mysql.sock' (62)

ios - 在 SceneKit 中移动节点

swift - 如何在swift中发现诸如 'IntegerLiteralConvertible'之类的协议(protocol)?

swift - segue 后模糊背景 View