MacBookやMacBook Airのトラックパッドでのピンチやスワイプを取得する方法の解説です。
こちらは以下のバージョンの自作メタセコイアビューアに「こんな機能はどう?」と提案を貰ったときに合わせて教えて貰ったサイト(こちら)を元に色々と調べて実装しました。
Mac用メタセコイアビューアを作ってみた(Ver 1.2) - 強火で進め
http://d.hatena.ne.jp/nakamura001/20091226/1261844528
※実装例はこちらのビューアのソースコードを参照下さい。
実装は至って簡単で以下の様なメソッドをViewで定義する事でジェスチャのイベントが取得できます。
// Pinch(ピンチ)のジェスチャ -(void)magnifyWithEvent:(NSEvent *)anEvent { NSLog(@"magnify %f", [anEvent deltaZ]); } // 回転のジェスチャ -(void)rotateWithEvent:(NSEvent *)anEvent { NSLog(@"rotate %f", [anEvent rotation]); } // 3本指でのスワイプのジェスチャ -(void)swipeWithEvent:(NSEvent *)anEvent { NSLog(@"swipe %f %f", [anEvent deltaX], [anEvent deltaY]); }
なお、 magnifyWithEvent と rotateWithEvent については普通にfloat(CGFloat)の範囲での値がデータとして来るのですが swipeWithEvent については -1, 0, 1 のいずれかの値となる事に注意する必要があります。
Pinch(ピンチ)時の取得データは以下になります。
2009-12-29 02:26:49.206 MqoViewer[29323:10b] magnify 3.997803
2009-12-29 02:26:49.215 MqoViewer[29323:10b] magnify 1.998901
2009-12-29 02:26:49.224 MqoViewer[29323:10b] magnify 2.998352
2009-12-29 02:26:49.234 MqoViewer[29323:10b] magnify 0.999451
2009-12-29 02:26:49.249 MqoViewer[29323:10b] magnify 2.998352
2009-12-29 02:26:49.259 MqoViewer[29323:10b] magnify 0.999451
2009-12-29 02:26:49.430 MqoViewer[29323:10b] magnify -0.999451
2009-12-29 02:26:49.439 MqoViewer[29323:10b] magnify -0.999451
2009-12-29 02:26:49.447 MqoViewer[29323:10b] magnify -2.998352
2009-12-29 02:26:49.456 MqoViewer[29323:10b] magnify -3.997803
2009-12-29 02:26:49.465 MqoViewer[29323:10b] magnify -3.997803
スワイプ時の取得データは以下になります。
2009-12-29 01:47:34.863 MqoViewer[29161:10b] swipe 1.000000 0.000000
2009-12-29 01:47:42.681 MqoViewer[29161:10b] swipe 0.000000 -1.000000
2009-12-29 01:47:43.850 MqoViewer[29161:10b] swipe -1.000000 0.000000
2009-12-29 01:47:44.611 MqoViewer[29161:10b] swipe 1.000000 0.000000
2009-12-29 01:47:45.541 MqoViewer[29161:10b] swipe -1.000000 0.000000
2009-12-29 01:47:46.684 MqoViewer[29161:10b] swipe 0.000000 -1.000000
参考サイト
CocoaDev: MultiTouchTrackpad
http://www.cocoadev.com/index.pl?MultiTouchTrackpad
Mac Dev Center: Cocoa Event-Handling Guide: Handling Trackpad Events
http://developer.apple.com/mac/library/documentation/cocoa/Conceptual/EventOverview/HandlingTouchEvents/HandlingTouchEvents.html