用户在使用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);
}