-touchesEndedメソッドの実行が終了してから 2 秒後に認識されるメソッドを実行したい。ただし、ユーザーがこの 2 秒以内に何かに触れた場合、メソッドを実行してはなりません。-touchesEndedメソッドが次回実行された後、2 秒間待機するようにタイマーを再度設定する必要があります。などなど... この質問が十分に明確であることを願っています。そうでない場合は、お知らせください。
質問する
102 次
3 に答える
2
これを調整するには、 NSTimerを使用する必要があります。タイマーを開始するイベントがトリガーされたらscheduledTimerWithTimeInterval:target:selector:userInfo:repeats:
、関数呼び出しを 2 秒でスケジュールするために使用します。
ビュー コントローラーに対してグローバルなブール変数を使用して、その間にタイマーが設定されないようにします。
大まかなアイデアは次のとおりです。
BOOL shouldRespondToTouch = YES;
- (void)touchesEnded {
[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(doAction) userInfo:nil repeats:NO];
shouldRespondToTouch = NO;
}
- (void)doAction {
shouldRespondToTouch = YES;
// Do stuff here
}
于 2013-04-02T18:18:54.053 に答える
0
結局のところ、それは本当に簡単です。
view.h で ivar を作成します。
NSDate *startDate;
view.m のこれらのメソッドに以下を追加します。
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
self->startDate = [NSDate date];
NSLog(@"%@", startDate);
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
if (self->startDate) {
NSTimeInterval ti = [[NSDate date] timeIntervalSinceDate:self->startDate];
NSLog(@"Time: %f", ti);
if (ti >= 2 ) {
NSLog(@"Yes, greater than 2 seconds !");
}
}
}
魅力のように機能します。
于 2013-04-03T14:57:29.663 に答える