我正试图在Mac OS
中的SwiftUI
SpriteView
内的SpriteKit
SKScene
内截获鼠标单击事件。当我在视图中单击鼠标时,永远不会调用接受NSEvent
对象的覆盖touchesBegun()
。CCD_ 8被设置为真。我错过了什么?在Xcode 13.2中运行,针对Mac OS的部署目标为12.1。
import SwiftUI
import SpriteKit
class MyScene : SKScene {
override func touchesBegan(with event: NSEvent) {
print(event)
}
}
var scene : MyScene {
let r = MyScene()
r.isUserInteractionEnabled = true
r.size = .init(width: 500, height: 500)
r.scaleMode = .aspectFill
r.backgroundColor = .orange
return r
}
struct ContentView: View {
var body: some View {
SpriteView.init(scene: scene)
.frame(width: 500, height: 500)
.padding()
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
在macOS上,SKScene
继承自NSResponder
,因此我们覆盖鼠标处理程序,如
class MyScene : SKScene {
override func mouseDown(with event: NSEvent) { // << here !!
print(event)
}
}
使用Xcode 14/macOS 12.5 进行测试