2011年1月29日土曜日

トラックパッドのピンチ操作で拡大縮小

 「Cocoaの日々: [Mac] トラックパッド 〜 ピンチで拡大縮小」を参考に、開発中の EPUB 閲覧アプリケーションにピンチ操作による文字の拡大縮小処理を追加。具体的には WebView のサブクラスに以下のメソッドを実装した。
- (void)magnifyWithEvent:(NSEvent *)event
{
  static NSTimeInterval lastOccurredTime;
  NSTimeInterval currentTime = [event timestamp];
  if(currentTime - lastOccurredTime < 0.3) return;

  if([event magnification] > 0) [self makeTextLarger:nil];
  else [self makeTextSmaller:nil];
  
  lastOccurredTime = currentTime;
}
 ピンチ操作の拡大縮小具合は [event magnification] で得られる。拡大の場合は正、縮小の場合は負の値が取れるけん、それに合わせて WebView の文字拡大縮小のメソッドを呼び出す。

 ユーザ的には一度のピンチ操作でも、magnifyWithEvent: はジェスチャ中に何度も呼び出されてしまう。そのままでは一度のピンチ操作で一気に最大/最小文字サイズまで行ってしまうけん、最後にイヴェントが発生した時間を保存しておき、現在時間と比べて適当な時間間隔内であれば何もしないようにしておく。イヴェントが発生した時間(システム起動時からの経過時間)は [event timestamp] で取れる。

0 comments:

コメントを投稿