2010-04-17 4 views

ответ

4

Вы могли бы реализовать этот метод так:

-(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, хотя тогда вы получаете действительно Hacky.

+0

благодарит человека за помощь – Nanz

0

Вы можете отправить сообщение с задержкой performSelector:withObject:afterDelay: или один из связанных с ним методов.

Смежные вопросы