UIView动画在第一次运行后不立即执行。

时间:2014-11-27 01:11:07

标签: ios animation uiview

所以基本上我有两个方法,当用户点击地图中的Annotation时我会运行这两个方法。

- (void) methodA{

        [UIView animateWithDuration:kRequestButtonAnimationDuration animations:^(void){
            self.button.transform = CGAffineTransformMakeTranslation(0,-(self.navigationController.view.frame.size.height - self.button.frame.origin.y)); }]; }

- (void) methodB:(double)value andBoolean:(BOOL) boolean{    
     if (self.timer) {
         [self.timer invalidate];
         self.timer = nil;
       }

        if (boolean) {
          self.timer = [NSTimer scheduledTimerWithTimeInterval:value target:self selector:@selector(pullButtonUp) userInfo:nil repeats:NO];

        }   else{
          self.timer = [NSTimer scheduledTimerWithTimeInterval:value target:self selector:@selector(showTabBar) userInfo:nil repeats:NO];
}}

-(void)pullButtonUp{
    [(LLTabBarViewController*)self.tabBarController showTabBarAnimated];}

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view{

[self methodA];

[self methodB:2.0 andBoolean:TRUE];

}

因此,在我第一次选择注释时,它运行良好:它在2.0秒后运行methodA,然后运行methodB。

但是当我再次尝试时,它同时运行A和B(基本上methodA等待2.0秒执行)。

这可能与循环有关吗?

我该如何追踪这个问题?有没有乐器?哪一个?

我有点迷失,请帮帮我!

1 个答案:

答案 0 :(得分:0)

我认为这就是你想要做的事情

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view

    __weak typeof(self) weakSelf = self;
    BOOL arbitraryBool = YES;

    [UIView animateWithDuration:2
                     animations:^{
                         self.button.transform = CGAffineTransformMakeTranslation(0,-(self.navigationController.view.frame.size.height - self.button.frame.origin.y));
                     } completion:^(BOOL finished) {
                         if (finished) {

                             if (arbitraryBool) {
                                 [weakSelf pullButtonUp];
                             } else {
                                 [weakSelf showTabBar];
                             }
                         }
                     }]:
}