7

我想在 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 永远不会被调用。难道我做错了什么?

4

2 回答 2

3

您可能可以CGEventCreate用来创建手势事件。“官方”定义的事件类型CGEventCreate不包括手势事件类型,但您可以传入定义的值NSEvent.h

NSEventTypeGesture
NSEventTypeMagnify
NSEventTypeSwipe
NSEventTypeRotate
NSEventTypeBeginGesture
NSEventTypeEndGesture

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

CGEventSourceRef eventSource = CGEventSourceCreate(kCGEventSourceStateCombinedSessionState);
CGEventRef event = CGEventCreate(eventSource);
CGEventSetType(event, NSEventTypeMagnify);
//continue to set up the event
于 2010-03-22T01:47:09.560 回答
0

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

于 2012-02-25T00:32:24.850 回答