美文网首页
iOS 动画中正确响应button事件

iOS 动画中正确响应button事件

作者: Jt_Self | 来源:发表于2017-03-20 10:59 被阅读0次
[UIView animateWithDuration:1.4 animations:^{
             sender.center = CGPointMake(sender.center.x, sender.center.y+3);
 } completion:^(BOOL finished) {
              NSLog (@"动画结束了");
}];

在这个简单的动画开始后,单击屏幕上的btnTest并不能触发相应事件,因为btnTest的frame在动画结束位置,而并不在动画中的位置。所以只有单击动画结束位置才能响应其事件。如何能做到在动画中单击屏幕上的button能正确响应其事件呢?大致有两种办法。
1、第一种是使用NSTimer替代上面的动画。在此不多做介绍。
2、首先我们需要知道的是控件在动画中展示在屏幕中的是layer.presentationLayer,我们也可以称之为展示层,可以根据它得到当前动画中的坐标:layer.presentationLayer.frame。

那么我们就可以通过屏幕的触摸方法得到触摸点的坐标与上面动画中的坐标进行判断

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{
        NSSet *allTouches = [event allTouches];    //返回与当前接收者有关的所有的触摸对象
        UITouch *touch = [allTouches anyObject];   //视图中的所有对象
        CGPoint point = [touch locationInView:self];//触摸点的坐标

        CGRect frame = [btn.layer presentationLayer].frame;//移动中的坐标
        
        if (CGRectContainsPoint(frame, point))
        {
            [self click:btn];
        }
}

ps:btn.userInteractionEnabled = NO; button的交互必须关掉,是事件能够向下传递被view接受,从而响应touch事件。

相关文章

  • iOS 动画中正确响应button事件

    在这个简单的动画开始后,单击屏幕上的btnTest并不能触发相应事件,因为btnTest的frame在动画结束位置...

  • SwiftUI Button

    List 中 Button 响应事件Button 响应范围大小

  • button动画过程中不能响应事件解决办法

    Button在执行CAKeyframeAnimation动画时无法响应点击事件。解决办法:1、设置动画过程中可以交...

  • iOS 解决 UIButton 执行动画后点击失效问题

    button 执行CAKeyframeAnimation动画后,发现点击事件不能响应了!查看视图的层级,发现 bu...

  • iOS button addTarget 无法响应事件

    iOS button addTarget 无法响应事件 1.问题描述 封装了一个XYAlterview,继承于UI...

  • 响应链

    iOS事件响应链中Hit-Test View的应用从iOS的事件响应链看TableView为什么不响应touche...

  • iOS事件的响应者链

    iOS 事件响应者链 1 iOS中的事件 触摸事件 加速计事件 远程控制事件 在iOS中不是任何对象都能处理事件,...

  • 消息响应链

    当用户点击了屏幕中的button,事件是如何响应的呢,为什么点击其他区域没有事件响应呢?事件又是怎么触发的呢? 首...

  • iOS 响应链

    iOS开发 - 事件传递响应链iOS 响应者链,事件的传递事件传递之响应链Cocoa Touch事件处理流程--响...

  • 响应者链浅谈

    响应者对象 响应者对象(Response object) 响应者对象就是可以响应事件并对事件作出处理。iOS中UI...

网友评论

      本文标题:iOS 动画中正确响应button事件

      本文链接:https://www.haomeiwen.com/subject/tdubnttx.html