0
J'ai un UIScrollView
et que vous souhaitez régler une minuterie, donc si je fais défiler et ne rien faire pendant environ 10 secondes, une méthode de travail sera appelé, et si je fais défiler la minuterie replacerez avant ces 10 secondes. Mon code ne fonctionne pas.UIScrollView timer
// 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;
}
}
Hey man, c'est une façon élégante de le faire :), vraiment merci. Dieu vous bénisse :). – funnyCoder
Vous êtes les bienvenus. Mais je préfère que les bénédictions me laissent tranquille. –
Moi aussi :), merci. – funnyCoder