xcode - 如何创建 cocoa 手势事件

标签 xcode macos cocoa

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

CGEventPost(kCGHIDEventTap, cgEvent);

谢谢

最佳答案

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

与手势相关的事件只有 Cocoa API 级别的公共(public)常量。例如,虽然 NSLeftMouseDragged == kCGEventLeftMouseDragged == NX_LMOUSEDRAGGED == 6,但 NSEventTypeMagnify == 30 没有任何等效的 kCGEventMagnify 或 NX_MAGNIFY。

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

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

关于xcode - 如何创建 cocoa 手势事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10974039/

相关文章:

objective-c - Cocoa NSBrowser 和 CFURLEnumeratorCreateDirectoryURL

macos - Segoe UI 在 Mac Safari 上无法正常工作(仅适用于标题,其余文本显示为 Times New Roman)

iphone - 带有从互联网下载的声音的本地通知 - iPhone

macos - 如何在 cocoa 中设置 nstextfield 的字体和颜色?

ios - 创建一个全局变量来存储 NSDate 的时间?

ios - swift 3 在应用程序处于后台时读取加速度计数据

macos - 处理 64 位 OS X 应用程序中的马赫异常

cocoa - 使用 NSManagedObjectContext 的 objectWithID : 的 'proper' 方法是什么

android - 对 SpriteKit 的适当支持

ios - Xcode:Time Profiler 工具能否按时间顺序显示完整的函数调用序列?