2010-03-21 109 views
7

我想在Mac OS X上觸發多點觸控手勢事件。有沒有辦法做到這一點?使用CGEventCreateMouseEvent和CGEventCreateKeyboardEvent可以觸發鼠標或鍵盤事件。多點觸控事件是否有類似的低級功能?有沒有辦法在Mac OS X上觸發手勢事件?

韓城


你的建議是行不通的。我試過這段代碼:

- (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 2012-10-16 08:06:50

+0

你是否發現需要設置的提交? – 2016-08-25 21:14:30

回答

2

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

你可以提供關於什麼數據「設置」的更多細節? – 2012-11-08 10:29:02

+0

如何設置這個事件 – 2016-08-25 21:13:46

0

不知你是否嘗試張貼的旋轉事件之前張貼NSEventTypeBeginGesture?

相關問題