如何将 CGWarpMouseCursorPosition() 移动到 NSView 的中心?

问题描述 投票:0回答:1

我正在尝试创建一个将鼠标锁定在屏幕中央的游戏。为了完成这个任务,我找到了合适的方法:

CGWarpMouseCursorPosition

然后我搜索了如何获取

NSView
的中心并发现了这个:获取NSView的中心点

我使用了提供的答案,但得到了不正确的结果。无论窗口在哪里,鼠标移动到的点始终是距屏幕左上角框架宽度和高度的一半。就好像视图的

frame.origin
始终是
{0, 0}
,即使窗口位于其他位置。

在我的代码中,

window
是从实现
NSWindowController
NSWindowDelegate
继承的成员:

override func mouseMoved(with Event: NSEvent) {
    if let window = window, let view = window.contentView {
        let frame = view.frame
        CGWarpMouseCursorPosition(CGPoint(x: frame.midX, y: frame.midY))
        // ...
    }
}

获取

NSView
中心点以与
CGWarpMouseCursorPosition()
函数一起使用的正确方法是什么?

swift macos nsview nswindow cgrect
1个回答
0
投票

就好像 window.contentView.frame.origin 始终为 {0, 0},尽管事实并非如此

是的。内容视图位于窗口“内部”,其原点位于窗口的角落。这就是为什么你不能设置内容视图的框架:它无处可去。

也许你想知道的是窗口自己的

frame
在哪里?

© www.soinside.com 2019 - 2024. All rights reserved.