事件:当用户手指触击屏幕以及在屏幕上移动时,系统不断发送给应用程序的对象,一个UIEvent对象表示一个事件
触摸:有事件控件两方面
时间:手指放下,手指移动,手指抬起
空间:手指放下,移动,抬起的位置
触摸开始
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent: (UIEvent *)event { NSLog(@"开始触摸"); }
手指移动
- (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { UITouch *touch = [[touches allObjects] lastObject]; CGPoint point = [touch locationInView:self]; NSLog(@"x = %f, y = %f", point.x, point.y); }
触摸结束
- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { NSLog(@"触摸结束"); }
响应者链:一个响应者对象的连接序列,事件或动作消息依次传递
响应者:iOS中所有能响应事件的对象都是响应者,一同定义了一个抽象的父类UIResponder来表示响应者
检查触摸:UIApplications -> window -> ViewController -> view -> 检查所有子视图
处理事件:触摸的子视图 -> view -> ViewController -> window -> UIApplication
视图类的属性userInteractionEnabled
可以阻断响应者链
userInteractionEnabled:用户界面响应开关
手势识别器
手势识别器:UIGestureRecognizer,用于识别手势
手势:有规律的触摸
系统提供的手势识别器这个抽象父类我们是不会直接使用,而是根据需求使用特定的子类手势,系统提供的手势类型:
- 轻拍:UITapGestureRecognizer
- 长按;UILongPressGestureRecognizer
- 旋转:UIRotationGestureRecognizer
- 捏合:UIPinchGestureRecognizer
- 平移:UIPanGestureRecognizer
- 轻扫:UISwipeGestureRecognizer
- 屏幕边缘轻扫:UIScreenEdgePanGestureRecognizer
创建方法
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap)];
添加方法
[self.imageView addGestureRecognizer:tap];
其他类同理
View的transform属性
transform:能改变view的现实状态,实现view的缩放、旋转、平移
- 平移:CGAffineTransformMakeTranslation
- 缩放:CGAffineTransformMakeScale
- 旋转;CGAffineTransformMakeRotation
方法1,此方法只能改变一次imageView的transform,即第二次触发不生效
self.imageView.transform = CGAffineTransformMakeRotation(1.0);
方法2,此方法能多次触发,意为在当前的transform上再次进行更改
self.imageView.transform = CGAffineTtansformRotation(self.imageView.transform,1.0);
其他方法同理