ios - 调整 UIView 大小后,UITapGestureRecognizer 不起作用
问题描述
我想以编程方式移动和扩展 a UIView
on tap 的大小,然后,如果UIView
再次点击,将其动画化回其原始大小和位置。
我可以UIView
在第一次点击时展开并移动。但是,在初始动画之后,根本不会注册点击。
let tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(handleTap(sender:)))
myView.heightAnchor.constraint(equalToConstant: 50).isActive = true
myView.widthAnchor.constraint(equalToConstant: 50).isActive = true
myView.isUserInteractionEnabled = true
myView.addGestureRecognizer(tapRecognizer)
下面是我的函数,handleTap 调用它在第一次点击时执行初始动画。它运行良好。我翻译 myView 的位置,然后更改帧大小以使其更大。
fileprivate func expandView(_ sender: UITapGestureRecognizer) {
UIView.animate(withDuration: 0.5, animations: {
let translate = CGAffineTransform(translationX: 100, y: 50 )
sender.view?.transform = translate
sender.view?.backgroundColor = .green
}) { (_) in
UIView.animate(withDuration: 0.5, animations: {
// change frame size of view to make it bigger
sender.view?.frame = CGRect(x: 100, y: 50, width: 100, height: 100)
})
}
}
我尝试注释掉改变帧大小的动画,只留下 XY 平移。这也不允许在点击 myView 时再次触发 handleTap。