6

我有以下代码:

[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,即使我设置了适当的选项,也不会发生任何事情。

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

4

3 回答 3

28

使用新的动画块时,如果您希望在动画期间启用用户交互,则必须在选项掩码中进行设置。例如:

[UIView animateWithDuration:1.0 
                      delay:0 
                    options:UIViewAnimationOptionAllowUserInteraction 
                 animations:^{ myView.alpha = 0.5; } 
                 completion:NULL];
于 2011-04-06T20:45:52.787 回答
5

我想出了一个解决方案:

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

这工作得很好。

-j

于 2011-03-07T17:23:03.417 回答
0

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

+ [UIView setAnimationDidStopSelector:]

而不是使用块?

于 2011-03-03T14:05:41.257 回答