У меня есть подкласс MKPointAnnotation
со следующим методом, который я запускаю на iOS 4:
- (void)animate {
[UIView
animateWithDuration: 3.0
delay:1.0
options:UIViewAnimationOptionAllowUserInteraction
animations:^{
CLLocationCoordinate2D loc =
CLLocationCoordinate2DMake([self coordinate].latitude + 0.001,
[self coordinate].longitude + 0.001);
[self setCoordinate:loc];
}
completion:^(BOOL finished) {
NSLog(@"Is completed");
}];
}
Вызывается нажатием UIBarButtonItem
.
Я ожидаю увидеть мое путешествие по аннотации через MKMapView
. Однако все, что я вижу, - это аннотация в месте последнего упокоения, когда я вызываю метод следующим образом:
[mapView addAnnotation:myAnnotation];
[myAnnotation animate];
[myAnnotation release];
Предполагаемая анимация происходит, только если я вызываю метод, подобный этому:
[mapView addAnnotation:myAnnotation];
[myAnnotation performSelector:@selector(animate) withObject:nil afterDelay:0.5];
[myAnnotation release];
Обратите внимание, что я получаю непреднамеренное поведение, если значение 'afterDelay' меньше, например <0,1 с. </p>
Есть идеи, почему это может иметь место?