I have a view (A) that holds several rectangular subviews (B). Each of these subviews have a single tap recognizer to trigger an action. The parent view A also has a single tap recognizer that calls a function on A's controller to make each of the subviews B flash in a color. This is the function:
@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
}
}
}
It works but during the animation the subviews B won't trigger their single tap event. How can I make it possible to detect that single tap during the animation?
You have to use
for that. And provide
AllowUserInteraction
as an option to allow the user to interact with the view during animation.See the docs for more options.