iOS 在移动动画过程中响应触摸

最近公司项目要做个文字跑马灯控件,提示客户服务已经到期了。
拿到需求,上去就是干。一番调研加操作,跑马灯完成了。这时候需要加个删除的方法,便于用户看完提示后删除。就在跑马灯控件上面加了一个UIImageView,添加了单击手势,始终不起作用。一番查找才发现:
其中最关键的地方在于,动画开始后有两个图层:

一个view.layer.presentationLayer用来显示动画(属性随动画过程慢慢改变);

一个view.layer用来处理用户交互(动画一开始属性值已经改变到动画结束时的状态)

在移动过程响应触摸,要注意以下几个地方:

1.userInteractionEnabled属性设为YES。UIView默认为YES,但是UIImageView,UILabel等重写后默认为NO

2:执行动画时 options添加UIViewAnimationOptionAllowUserInteraction 打开用户交互

[UIView animateWithDuration:20
                                      delay:0
options:UIViewAnimationOptionAllowUserInteraction|
                                            UIViewAnimationOptionCurveLinear
                                 animations:^{
                                     imgView.frame = CGRectMake(100, 100, 100, 100);
                                 }
                                 completion:NULL
                 ];

你可能感兴趣的:(iOS 在移动动画过程中响应触摸)