我有以下代码:
[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,即使我已经设置了相应的选项也没有任何反应。
有人有什么想法吗?我用谷歌搜索,找不到答案。
答案 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:]
而不是使用块?