10.6 から追加されたトラックパッドを使ったピンチ操作のイベントを確認してみた。
ピンチ (pinch)
iPhone でお馴染みの2本指を使った拡大縮小操作。2本指をトラックパッドへ置いた後、指を近づけると縮小操作(pinch-in)となる。システム環境設定の「トラックパッド」で有効無効の設定が可能。
ここで無効になっていると後述するピンチのイベントが受け取れない。
サンプル
初期画面。
トラックパッドでピンチイン(2本指を近づける)と縮小する。
ピンチアウト(2本指を遠ざける)と拡大する。
実装
イベントをハンドリングしたいビューの -[NSResponder magnifyWithEvent:] をオーバライドするだけで良い。
- (void)magnifyWithEvent:(NSEvent *)event { NSSize newSize; newSize.height = self.frame.size.height * ([event magnification] + 1.0); newSize.width = self.frame.size.width * ([event magnification] + 1.0); [selfsetFrameSize:newSize]; }event.magnification は縮小の場合負値、拡大の場合正値となる。1.0 を加えて使う。
以下は渡ってくる NSEvent のログ例。
NSEvent: type=Magnify loc=(207,200) time=148622.8 flags=0x100 win=0x10061cd10 winNum=16416 ctxt=0x0 deltaZ=1.998901 magnification=0.003998 // 拡大 NSEvent: type=Magnify loc=(191,179) time=148703.6 flags=0x100 win=0x10061cd10 winNum=16416 ctxt=0x0 deltaZ=-0.999451 magnification=-0.001999 // 縮小
ソースコード
GitHub からどうぞ。
TrackpadSample at 2011-01-29 from xcatsan/MacOSX-Sample-Code - GitHub
参考情報
Cocoa Event-Handling Guide: Handling Trackpad Events
"Handling Gesture Events" に maginifyWithEvent: の説明あり。
Responses
Leave a Response