У меня есть UIScrollView
и я хочу установить таймер, поэтому, если я прокручиваю и ничего не делаю в течение примерно 10 секунд, будет вызван метод задания, и если я прокручу до этих 10 секунд, таймер будет сброшен.Мой код не работает.
// Global vars
NSDate *startDate, *endDate;
// myTimer (NSTimer ) and timerIsValid(BOOL) are part of my viewController class
- (BOOL)timerExpired
{
NSDate *dateNow=[NSDate date];
if ([[dateNow laterDate:endDate] isEqual:endDate]) {
return YES;
}
else {
return NO;
}
}
// If i begin scrolling i want to stop the timer
- (void)scrollViewWillBeginDragging:(UIScrollView *)myScrollView
{
// Check if the timer is alive and invalidate it
if ([self timerExpired] == NO) {
NSLog(@"TIMER STILL ALIVE...KILL IT");
[myTimer invalidate];
myTimer = nil;
timerIsValid = NO;
}
else {
NSLog(@"TIMER IS DEAD");
timerIsValid = YES;
}
}
// After 10 seconds if i didn't scroll, i want to some job
- (void)scrollViewDidEndDecelerating:(UIScrollView *)myScrollView
{
if (endDate) {
[endDate release];
}
startDate = [NSDate date];
endDate = [[startDate addTimeInterval:10.0] retain];
if (!myScrollView.dragging)
{
if (autoscrollTimer == nil) {
// Create a new timer
myTimer = [NSTimer scheduledTimerWithTimeInterval:10.0
target:self
selector:@selector(timerFireMethod:)
userInfo:nil
repeats:YES];
}
}
}
- (void)timerFireMethod:(NSTimer*)theTimer
{
if (timerIsValid) {
// do nothing
NSLog(@"DO NOTHING");
}
else {
NSLog(@"DO SOME JOB");
[self doSomeJob];
timerIsValid = YES;
}
}