Всякий раз, когда пользователь прокручивает карту или масштабирование в / из, этот метод вызывается мгновенно. Я хочу, чтобы задержать вызов этого метода, скажем, на 2 секунды. Можно ли это сделать?
Задержка вызов метода делегата - MAPview: regionDidChangeAnimated:
голоса
3
2 ответов
голоса 4
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
0
Вы можете отправить сообщение с отсроченной performSelector:withObject:afterDelay:или один из связанных с ним методов.













