在Mac OS X上有一种触发手势事件的方法吗?

7
我希望在Mac OS X上触发多点触摸手势事件。有没有办法做到这一点?鼠标或键盘事件可以使用CGEventCreateMouseEvent和CGEventCreateKeyboardEvent触发。是否有类似的低级函数来处理多点触摸事件?
Rok
你提供的建议不起作用。我已经尝试了这段代码:
- (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函数从未被调用过。我做错了什么吗?

1
有人找到解决方案了吗???我已经苦恼几天了,但似乎什么都不起作用:( - Nostradamus
你找到需要设置的字段了吗? - Michał Ziobro
2个回答

3

您可以使用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

1
你能否提供更多有关要"设置"哪些数据的细节? - Alexey F
如何设置此事件。 - Michał Ziobro

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接