Swift:防止鼠标指针离开窗口

标签 swift macos sprite-kit

我有一个 Mac SpriteKit/swift 应用程序(一个游戏),我需要将光标保持在一个窗口内。或者至少在它离开游戏窗口时给出一些警告。

我已经设置了一个跟踪区域,并且正在使用鼠标移动游戏 handle 。但是当光标移到窗口外时,桨停止工作。

 let options = [ .mouseMoved,
                .activeAlways,
                .mouseEnteredAndExited] as NSTrackingArea.Options
let tracker = NSTrackingArea(rect:frame, options: options, owner:view, userInfo: nil)
view.addTrackingArea(tracker)

鼠标进入和退出功能似乎没有触发

override func mouseExited(with event: NSEvent) {
   // NSCursor.unhide()
    print("_____________________EXIT")
   //Never fires

  }

  override func mouseEntered(with event: NSEvent) {
 //   NSCursor.hide()
    print("_____________________ENTER")
 // never fires

  }

有什么想法吗?谢谢

最佳答案

我认为您会更喜欢不同的解决方案:隐藏光标并断开鼠标移动与光标位置的连接。

您可以使用 CGDisplayHideCursorCGDisplayShowCursor 隐藏和显示指针。

您可以使用 CGAssociateMouseAndMouseCursorPosition 断开鼠标移动与光标位置的连接(并重新连接)。当您在鼠标与光标断开连接时收到 mouseMovedmouseDragged 事件时,您可以从 deltaX 中读取鼠标移动>deltaY 事件的字段。

关于Swift:防止鼠标指针离开窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50357135/

相关文章:

ios - 如何从collectionview中被点击的单元格中获取信息

ios - tableViewCell 可以同时可移动并具有 .none 编辑风格的滑动操作吗

swift - 如何使用进度条显示 cocoa 中 NSTask 的 `git clone` 进度

ios - 使用文件夹引用而不是组创建纹理图集

swift - 球在 Pong Clone 中不动

xcode - SKTexture 没有正确改变

ios - 如何删除 ios 图表中的水平条形图边距/偏移?

macos - 将窗口直接放置在事件窗口后面

objective-c - 我无法获取使用 XCode 5 的 Collection View 编程主题教程

ios - 如何修复使用前置摄像头镜像、AVFoundation、Swift 捕获图像