Вы можете реализовать этот метод следующим образом:
-(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];
}
Тогда где-то в том же классе:
-(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
}
Конечно, если вам не нужен ни один из этих аргументов (mapView
или animated
), вы можете значительно упростить это, передав только тот, который вам нужен.
Если вы не можете просто отредактировать код для MKMapViewDelegate
, возможно, вы могли бы сделать что-то подобное с методом swizzling, хотя тогда вы получите действительно хаки.