[Mac] トラックパッド 〜 ピンチで拡大縮小

2011年1月29日土曜日 | Published in | 0 コメント

このエントリーをはてなブックマークに追加

[関連] Cocoaの日々: [Mac] トラックパッドのスワイプのイベントを受け取る

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

人気の投稿(過去 30日間)