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

トラックパッド - 2本指で回転

[関連]

10.6 から追加されたトラックパッドを使った回転操作のイベントを確認してみた。

回転 (rotate)


2本指をトラックパッドへ置いた後、指を左右に回転させる。システム環境設定の「トラックパッド」で有効無効の設定が可能。iPhone ではあまり使われていない(というか見た覚えがない)。

ここで無効になっていると後述する回転時のイベントが受け取れない。




サンプル


初期画面。

トラックパッドで2本指を右に回すと画像が右に回転する。



実装


イベントをハンドリングしたいビューの -[NSResponder rotateWithEvent:] をオーバライドするだけで良い。
- (void)rotateWithEvent:(NSEvent *)event {

    [selfsetBoundsRotation:([selfboundsRotation] + [event rotation]*2)];
    [selfsetNeedsDisplay:YES];

}
以下は渡ってくる NSEvent のログ例。
NSEvent: type=Rotate loc=(95,224) time=148745.0 flags=0x100
 win=0x10061cd10 winNum=16416 ctxt=0x0
 rotation=-0.223812 // 右回転
NSEvent: type=Rotate loc=(265,249) time=148817.8 flags=0x100
 win=0x10061cd10 winNum=16416 ctxt=0x0
 rotation=0.355826 // 左回転


ソースコード


GitHub からどうぞ。
TrackpadSample at 2011-01-30 from xcatsan/MacOSX-Sample-Code - GitHub


参考情報


Cocoa Event-Handling Guide: Handling Trackpad Events
"Handling Gesture Events" に rotationWithEvent: の説明あり。

Responses

Leave a Response

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