Når brukeren ruller kart eller zoomer inn / ut, blir denne metoden kalles umiddelbart. Jeg ønsker å utsette samtalen til denne metoden ved å si 2 sek. Er det mulig å gjøre det?
Utsette samtalen til representanten metoden - mapView: regionDidChangeAnimated:
stemmer
3
2 svar
stemmer 4
4
Du kan implementere denne metoden slik:
-(void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
{
NSNumber *animatedNumber = [NSNumber numberWithBool:animated];
NSArray *args = [[NSArray alloc] initWithObjects:mapView,
animatedNumber,nil];
[self performSelector:@selector(delayedMapViewRegionDidChangeAnimated:)
withObject:args
afterDelay:2.0f];
[args release];
}
Så, et sted i samme klasse:
-(void)delayedMapViewRegionDidChangeAnimated:(NSArray *)args
{
MKMapView *mapView = [args objectAtIndex:0];
BOOL animated = [[args objectAtIndex:1] boolValue];
// do what you would have done in mapView:regionDidChangeAnimated: here
}
Selvfølgelig, hvis du ikke trenger en av disse argumentene (enten mapVieweller animated), kan du gjøre dette betydelig enklere ved å bare passerer den du trenger.
Hvis du ikke kan bare redigere koden for din MKMapViewDelegate, kanskje du kunne gjøre noe lignende med metoden swizzling, selv om så du får virkelig Hacky.
stemmer 0
0
Du kan sende en forsinket melding med performSelector:withObject:afterDelay:eller en av dens relaterte metoder.













