2012-04-13 10 views

答えて

3

私のお勧めは、そのビューで - (void)touchesBegan:withEvent:をオーバーライドすることです。

タッチイベントを受信したら、タイマーを設定し、その時間を3秒にします。あなたがタッチを受信し、タイマーがある場合、タッチ時間の3秒後にその発射日を変更してください。タイマーが起動すると、関数を呼び出し、タイマーをnilに設定します。

移動、削除、キャンセルの方法を使用して、必要なアクティビティが適切かつ適切なタイミングでタイマーを起動できるようにすることができます。

-1

使用NSTimerのように: -

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
UITouch *touch = [[event allTouches] anyObject]; 
CGPoint location = [touch locationInView:self.view]; 
if ([touch view] == self.view) 
    { 
    NSTimer *updateTimer = [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(updateTime) userInfo:nil repeats:YES]; 
    } 
} 

-(void)updateTime 
{ 
NSLog(@"....Update Function Called...."); 
[self functionName]; 
} 

使用このfunction.Checkを呼び出すためにそれがhelps.Thanksホープ:)

+0

注意これはパフォーマンスの観点から、確かに良いアイデアではないこと:あなたがいます必要以上に3倍の頻度でタイマーを起動し、画面が画面に表示されていない場合でもユーザーの操作が発生しなくても発砲します。ビューロードは実際に画面に表示されたときの判断基準ではありません。また、このコードはもはやビューに関連付けられていないことに注意してください。ビューは独立して認識していません。これは必ずしも最良のモデルではないコントローラに依存します。全体的には、全体的には非常にハッキングされているようです。 – thebarcodeproject

+0

thebarcodeproject、今すぐチェック! –

+0

あなたのメソッドtouchesBeganは、存在するタイマーもチェックする必要があります。存在する場合は、新しいものを作成するのではなく、元に戻します。これにより、メソッドが発生するまでメソッドが呼び出されなくなります。 これは動きにも触れることを考慮していないことに注意してください。タイマーも同様に遅らせる必要があります。 – thebarcodeproject

関連する問題