用户与uiview和动画完成块的交互

时间:2011-03-03 13:19:27

标签: iphone animation uiview gesture completion-block

我有以下代码:

[UIView animateWithDuration:2.0 delay:0.0 options:UIViewAnimationOptionAllowUserInteraction
     animations:^{
         imageView.bounds = endBounds;
     }
     completion:^(BOOL finished) {
         [UIView animateWithDuration:2.0 delay:0.5 options:UIViewAnimationOptionAllowUserInteraction
              animations:^{
                  imageView.bounds = startBounds;
              }
              completion:^(BOOL finished) {
                      [imageView removeFromSuperview];
              }];
     }];

另外我有:

[imageView setUserInteractionEnabled:YES];

和一个轻击手势识别器设置,用于处理用户点击imageView。当第一个动画发生时,手势识别器会像我期望的那样触发。但是如果我尝试在完成块的链式动画中点击imageView,即使我已经设置了相应的选项也没有任何反应。

有人有什么想法吗?我用谷歌搜索,找不到答案。

3 个答案:

答案 0 :(得分:27)

使用新动画块时,如果要在动画期间启用用户交互,则必须在选项蒙版中进行设置。例如:

[UIView animateWithDuration:1.0 
                      delay:0 
                    options:UIViewAnimationOptionAllowUserInteraction 
                 animations:^{ myView.alpha = 0.5; } 
                 completion:NULL];

答案 1 :(得分:5)

我想出了一个解决方案:

我将UIImageView包装在UIView(我的子类UIView)中,其边界/中心点与图像相同。然后我将手势识别器附加到包装器而不是图像。因为包装器的边界矩形/中心点在动画持续时间内永远不会改变,所以它始终可用作手势的目标。

这很有效。

-j

答案 2 :(得分:0)

如果您使用以下内容,您会看到相同的行为:

+ [UIView setAnimationDidStopSelector:]

而不是使用块?