在macOS上的Cocoa中,NSTouch
对象包含标准化坐标系中触摸的坐标(x,y在0.0和1.0之间的范围内)。它还具有触摸板设备的大小。
因此,对于NSTouch
对象,您必须触摸触摸板设备上的触摸坐标。这当然很有意义。
我现在要做的是将这些坐标映射到屏幕坐标。 (我知道这个定义不明确,所以请继续阅读以进一步解释我的意思。)
对于单点触控,此转换已由Cocoa / macOS处理:我得到一个NSEvent
对象(type=Gesture
),此NSEvent
具有鼠标指针的位置(并且NSTouch
的单个NSEvent
具有触摸板设备坐标。)
但这对多点触控手势不起作用,因为NSEvent
只有一个位置,而对于多点触控手势,鼠标指针的位置停留在多点触控手势开始的位置。
这一切都非常有意义。但是现在我想要以某种方式对单触式情况进行相同的转换(对于多点触控手势中的每个触摸)。我相信系统首选项中的触控板速度设置会影响这种映射。
如果您想了解一个用例,可以考虑一个允许多行(多点触摸)绘图的绘图应用程序,这些多线绘图应该以与鼠标指针相同的速度发生。
我发现NSTouch
有一个locationInView
函数,但这一直是我的断言。根据{{3}}预期的结果(此功能仅适用于来自触摸栏的触摸事件,但不适用于触控板)。
我找不到其他看起来很有希望的方法。