每当用户滚动地图或放大/缩小时,此方法都会立即被调用。我想延迟对此方法的调用,比如2秒。有可能吗?
答案 0 :(得分: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
的代码,也许您可以通过方法调配来做类似的事情,尽管那时你的真的 hacky。
答案 1 :(得分:0)
您可以使用performSelector:withObject:afterDelay:
或其中一种相关方法发送延迟消息。