2009年9月7日月曜日

iPhone:指定時間後にメソッドを実行

わざわざUITimerを使用せずに、指定した時間が経過した後にメソッドを実行する方法があります。UIObjectのperformSelectorメソッドを用います。

// 0.5秒後にメソッドを実行する
[self performSelector:@selector(xxxxxx)
withObject:nil
afterDelay:0.5f];

タップ回数を検出するサンプル
タップの回数に応じた処理を実装する場合、ユーザが次のタップをしないことを確認してから処理を開始する必要があります。そのためにperformSelectorを使用するサンプルです。

- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch* touch = [touches anyObject];
switch (touch.tapCount) {
case 1:
[self performSelector:@selector(singleTap) withObject: nil afterDelay:0.4f];
break;
case 2:
// ...
break;
}
}


- (void) singleTap{
if (tapCount ==1 ) {
// 0.4秒経過後まだタップ数が1で有ればシングルタップと認識する
// 処理を記述
}
}

0 件のコメント:

コメントを投稿