如何创建可可手势事件

时间:2012-06-11 02:43:12

标签: xcode macos cocoa

我有一个问题:如何通过代码创建手势事件,(旋转,放大或滑动...),我不想用它来缩放或旋转特定图像或类似的东西,我想要创建由CGEventRef cgEvent = CGEventCreateScrollWheelEvent(NULL, kCGScrollEventUnitLine, wheelCount, yScroll, xScroll);

创建的滚动事件等手势事件

CGEventPost(kCGHIDEventTap, cgEvent);

由于

1 个答案:

答案 0 :(得分:2)

并非所有事件都具有“快捷方式”创建函数(如CGEventCreateScrollWheelEvent,CGEventCreateMouseEvent和CGEventCreateKeyboardEvent),因此您必须创建一个空事件,然后使用CGEventSet *函数手动设置字段。

与手势相关的事件仅具有Cocoa API级别的公共常量。例如,当NSLeftMouseDragged == kCGEventLeftMouseDragged == NX_LMOUSEDRAGGED == 6时,NSEventTypeMagnify == 30没有任何等效的kCGEventMagnify或NX_MAGNIFY。

此外,手势事件的工作方式有点棘手;如果你没有发送正确的鼠标/触控板事件序列,手势,手势开始/结束和特定手势事件,它将无法正常工作。

关于每种事件类型需要哪些字段的文档不多;最简单的方法是先创建一个记录所有内容的事件点击,然后生成所需的事件并查看记录的内容。实际上,您可能还想记录一个NSEvent全局监视器(记录NSEvent本身及其底层的cgEvent)。