【发布时间】:2021-04-13 12:53:36
【问题描述】:
从 NSPoint 访问 x 和 y 坐标有多难……不敢相信。
我从以下电话中得到一个 NSPoint:
var mouseLoc = [NSEvent .mouseLocation]
我需要访问 x 和 y 坐标。 NSPoint 不提供像 CGPoint 这样的吸气剂。我了解到:我必须转换为 CGPoint,但我发现的任何东西似乎都无法在最新的 Swift 中使用:
var p = (CGPoint)mouseLoc // error: Cannot convert value of type '[NSPoint]' (aka 'Array<CGPoint>') to expected argument type 'NSPoint' (aka 'CGPoint')
var p = NSPointToCGPoint(mouseLoc) // error: Cannot convert value of type '[NSPoint]' (aka 'Array<CGPoint>') to expected argument type 'NSPoint' (aka 'CGPoint')
我确信这是一个完整的初学者的东西,但我就是不明白。
【问题讨论】:
-
mouseLoc是一个数组(多个项目),即使它只包含一个。 -
你正在创建一个 array 的 NSPoints。你想要的是
let mouseLoc = NSEvent.mouseLocation -
[ ... ]是 Swift 中数组字面量的语法,也许你把它和 Objective-C 消息的语法混在一起了? -
... 你永远不会遇到第一个错误,因为这种转换类型的 ObjC 语法 (
(CGPoint)mouseLoc) 在 Swift 中是无效的。 -
@RobNapier: 实际上
[NSEvent .mouseLocation]是 有效的 Swift :)
标签: swift macos cgpoint nspoint