事件的基本概念

用户在使用App的过程中会产生各种事件:

  • 触摸事件(手势与屏幕交互)
  • 加速计事件(摇一摇)
  • 远程控制事件(耳麦)

只有继承自UIResponder的对象才能接受并处理事件,这类对象称为响应者对象

  • UIApplication
  • UIViewController
  • UIView
  • ...

产生相应交互时,系统会自动调用相关事件

  • 触摸:touchesBegan:
  • 移动:touchesMoved:
  • 离开:touchesEnded:
  • 系统事件打断触摸:touchesCancelled:

UITouch对象

  • 作用:保存了触摸的相关信息
  • 通过相应属性与方法获取

UIEvent对象

  • 事件对象,记录了事件产生的时刻和类型
  • 还提供了相应方法可以获得在某个View上面的触摸对象UITouch

实现View随手指拖拽而移动

-(void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    //0.获取UITouch对象
    UITouch *touch = [touches anyObject];//当前只有一个UITouch对象,可以使用anyObject
    //1.获取手指当前触摸点
    CGPoint curP = [touch locationInView:self];
    //2.获取手指上一个触摸点
    CGPoint preP = [touch previousLocationInView:self];
    //3.计算偏移量
    CGFloat offsetX = curP.x - preP.x;
    CGFloat offsetY = curP.y - preP.y;
    //4.修改View的位置
    //MakeTranslation:会清空上一次的形变
    //self.transform = CGAffineTransformMakeTranslation(offsetX, 0);
    self.transform = CGAffineTransformTranslate(self.transform, offsetX, offsetY);
}
原文地址:https://www.cnblogs.com/ShaRuru/p/5100468.html