我正在努力弄清楚如何让用户在视图被动画时与其进行交互。
情况是这样的:我有一个包含card
子视图的UIView cardView
。card
是可拖动的磁贴,类似于Tinder中的卡片是可拖动/可滑动的。
我正在尝试通过动画到cardView.alpha = 0
来淡出使用animateWithDuration
的卡片。从逻辑上讲,这也会淡出所有子视图(card
对象)。在这个特定的例子中,我只针对一个card
子视图。但是,在动画过程中,我无法拖动/与card
交互。
下面是我使用的代码:
UIView.animateWithDuration(
duration,
delay: 0,
options: UIViewAnimationOptions.AllowUserInteraction,
animations: {self.cardView.alpha = 0}
) {
_ in
println("Card faded out")
card.removeFromSuperview()
}
为什么这个不起作用?任何帮助都将不胜感激。谢谢你!!
发布于 2014-09-03 08:38:40
我通过将alpha设置为0.1而不是0.0修复了此问题。我不确定这是否适用于您的情况,但它显示事件处理代码认为视图是不可见的,即使设置了UIViewAnimationOptionAllowUserInteraction标志也禁用了交互。奇怪的是,将alpha设置为0.01并不起作用,因此有一个可见性阈值,您必须保持高于该阈值。
发布于 2018-09-04 08:13:56
Alpha值为0时出现问题。接近于零的Alpha值将从视图响应器层次结构中删除视图。这里的修复方法是将alpha设置为:
self.cardView.alpha = 0.011
视图仍然不可见,但不会从响应器链中删除。根据我的测试,最小数量如下:
extension CGFloat {
static let minAlphaForTouchInput: CGFloat = 0.010000001
}
https://stackoverflow.com/questions/25477093
复制相似问题