2010年7月25日日曜日

UIButton(ボタンクラス)での長押し(longTouch)実装方法

iPhone COCOA Touch のボタンクラス(UIButton)で、標準では長押しがサポートされません。

はじめよくわかりませんでしたが、以下で実装可能です。ご参考まで。
うーん、時間かかった。標準でサポートしてね・・・・



-(IBAction) onTouchDown:(id)sender{

// Interface Builderを使って、TouchDownイベントと結びつける。
// 1秒後にdidDetectLoungTouchメソッドが呼び出される。
// ただしその間、TouchUpInsideイベントが発生すると、下のメソッドが
// 呼ばれ、キャンセルされる。
   [self performSelector:@selector(didDetectLongTouch:) withObject:sender afterDelay:1];

}

-(IBAction) onTouchUpInside:(id)sender{
// Interface Builderを使って、TouchUpInside イベントと結びつける。

//  上で設定したセレクタでの実行がキャンセルされる。
  [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(didDetectLongTouch:) object:sender];


 // ここに短く押した場合の処理を実装する。
 //  ただし、長く押したあとのTouchUpでもイベントされるため、
長く押したときの処理との互換性を確保、もしくは長く押した際のフラグを
もとに、互換性が確保できない処理をスキップする。


}


-(void) didDetectLongTouch:(id)sender{
  // 長押しした際の処理を実装する。
}

0 件のコメント:

コメントを投稿