How to detect touches in a view which is moving
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
let pf = layer.presentation()!.frame
// note, that is in the space of our superview
let p = self.convert(point, to: superview!)
if pf.contains(p) { return self }
return nil
}
It’s that easy
Related tip –
Don’t forget that in most cases if an animation is running, you will, of course, almost certainly want to cancel it. So, say there’s a “moving target” and you want to be able to grab it with your finger and slide it somewhere else, naturally in that use case your code in your view controller will look something like ..
func sliderTouched() {
if alreadyMoving {
yourPropertyAnimator?.stopAnimation(true)
yourPropertyAnimator = nil
}
etc ...
}