我有一个视图(a)包含几个矩形子视图(B)。每个子视图都有一个触发操作的点击识别器。父视图A也有一个单独的点击识别器,该识别器调用A控制器上的函数,使每个子视图B以某种颜色闪烁。这是函数:
@IBAction func highlightAreas(recognizer: UITapGestureRecognizer) {
for area in buttons {
// only show linked areas
if area.targetPage != nil {
let oldColor = area.backgroundColor
// show areas with animation
UIView.animateWithDuration(HIGHLIGHT_ANIMATION_TIME, animations: { Void in // begin of closure
area.backgroundColor = self.HIGHLIGHT_BACKGROUND_COLOR.colorWithAlphaComponent(self.HIGHLIGHT_ALPHA)
}) // end of closure
// hide areas with animation
UIView.animateWithDuration(HIGHLIGHT_ANIMATION_TIME, animations: { Void in // begin of closure
area.backgroundColor = oldColor?.colorWithAlphaComponent(0.0)
}) // end of closure
}
}
}
它可以工作,但在动画过程中,子视图B不会触发它们的单个点击事件。我怎样才能在动画过程中检测到这一点呢?
最佳答案
你必须使用
animateWithDuration(_ duration: NSTimeInterval,
delay: NSTimeInterval,
options: UIViewAnimationOptions,
animations: () -> Void,
completion: ((Bool) -> Void)?)
为了这个。并提供
AllowUserInteraction
作为允许用户在动画期间与视图交互的选项。有关更多选项,请参见the docs。
关于ios - 在UIView.animateWithDuration()期间启用手势识别器的用户交互,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30698238/