【问题标题】:Is there a way to trigger gesture events on Mac OS X?有没有办法在 Mac OS X 上触发手势事件?
【发布时间】:2011-01-30 01:09:56
【问题描述】:

我想在 Mac OS X 上触发多点触控手势事件。有没有办法做到这一点?鼠标或键盘事件可以通过 CGEventCreateMouseEvent 和 CGEventCreateKeyboardEvent 触发。多点触控事件是否有类似的低级功能?

韩国


您的建议无效。我试过这段代码:

- (void)rotateWithEvent:(NSEvent *)event {
    NSLog(@"ROTATE");
}
-(IBAction)button:(id)sender {
    CGEventSourceRef eventSource = CGEventSourceCreate(kCGEventSourceStateCombinedSessionState);
    CGEventRef event = CGEventCreate(eventSource);
    CGEventSetType(event, NSEventTypeRotate);
    CGEventPost(kCGHIDEventTap, event);
    NSLog(@"POST EVENT");
}

但是函数 rotateWithEvent 永远不会被调用。我做错了吗?

【问题讨论】:

  • 有人找到解决方案了吗???几天前我一直在为类似的问题苦苦挣扎,但似乎没有任何效果:(
  • 你找到需要设置的文件了吗?

标签: macos events multi-touch gesture


【解决方案1】:

您可以使用CGEventCreate 创建手势事件。为CGEventCreate“正式”定义的事件类型不包括手势事件类型,但您可以传入NSEvent.h 中定义的值:

NSEventTypeGesture
NSEventTypeMagnify
NSEventTypeSwipe
NSEventTypeRotate
NSEventTypeBeginGesture
NSEventTypeEndGesture

非手势类型的值似乎直接映射到 CGEventTypes.h 中的 kCGEvent<TYPE> 值,因此可以合理预期手势事件类型将起作用:

CGEventSourceRef eventSource = CGEventSourceCreate(kCGEventSourceStateCombinedSessionState);
CGEventRef event = CGEventCreate(eventSource);
CGEventSetType(event, NSEventTypeMagnify);
//continue to set up the event

【讨论】:

  • 您能否详细说明要“设置”哪些数据?
  • 如何设置此活动
【解决方案2】:

我想知道您是否尝试在发布旋转事件之前发布 NSEventTypeBeginGesture?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-03
    • 1970-01-01
    • 1970-01-01
    • 2013-04-14
    • 2012-06-08
    • 2021-07-28
    • 2016-10-22
    相关资源
    最近更新 更多