2011-03-28 36 views
0

我想在动画完成后删除此标签。我想在touchesEnded函数内的以下代码中进行动画处理时不会再看到它。我没有看到一个方法来检查,如果lbl.isAnimating已经忽略它在for循环(没有创造我自己的UILabels列表),但我还以为我在这里完成的代码会工作。但是在动画结束之后,如果点击不可见标签,我仍然会进入if区域。如何在动画结束时删除UIView?

for(lbl in mLabelOutletCollection) { 

     if (CGRectContainsPoint([lbl frame], [touch locationInView:self.view])) 
     { 

     [UIView animateWithDuration:1.0 delay:0.0 
       options:(UIViewAnimationOptionAllowUserInteraction) 
         animations:^{ 
          lbl.alpha = 0.0; 
          lbl.transform = CGAffineTransformMakeScale(1.5, 1.5); 
         } 

         completion:^(BOOL completed){ 
          [lbl removeFromSuperview]; 
          lbl.hidden=YES; 
         } 
     ]; 
     } 
    } 

回答

0

覆盖

- (void)finishAnimation:(NSString *)animationId finished:(BOOL)finished context:(void *)context { 

并提出了:

[lbl removeFromSuperview]; 
lbl.hidden=YES; 

那里。 另外,不知道,但我不相信你需要第二行lbl.hidden;因为你已经从超级视图中删除它。

+0

那老办法没有?我完整的函数被调用,但我猜标签仍然响应,因为它仍然在IBOutletCollection存在... – Mark 2011-03-29 01:09:42

0

我加入了布尔和循环后这样做解决了这个。尽管lbl被删除,但它仍然存在于OutletCollection中,并记住它在哪里。我以前曾试图这样,但这样做导致异常的循环中。

if (found) [mLabelOutletCollection removeObject:lbl];