Kdykoliv map uživatel svitky nebo přiblíží in / out, tato metoda volána okamžitě. Chci odložit volání této metody řekněme 2 sekundy. Je možné to udělat?
Zpozdit volání metody delegáta - MapView: regionDidChangeAnimated:
hlasů
3
2 odpovědí
hlasů 4
4
Dalo by se zavést tuto metodu, jako je tento:
-(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];
}
Pak se někde ve stejné třídě:
-(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
}
Samozřejmě, pokud nechcete potřebovat jeden z těchto argumentů (buď mapViewnebo animated), mohli byste, aby to mnohem jednodušší pouhým předáním ten, který dělal potřebu.
Pokud nemůžete jen upravit kód pro vaše MKMapViewDelegate, možná byste mohli udělat něco podobného s metodou závislé míchání, i když pak začínáš opravdu hacky.
hlasů 0
0
Můžete poslat zprávu s zpožděný performSelector:withObject:afterDelay:nebo jeden z jejích přidružených metod.













