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 に答える