触摸事件
iOS中事件可以分为三大类:触摸事件、加速器事件(摇晃手机)、远程控制事件(线控)
在iOS中只有集成了UIResponder的对象才能接受并处理事件,我们称之为"响应者对象"
UIApplication、UIViewController、UIView、UIWindow都是集成自UIResponder,因此他们都是响应者对象,都能够接受并处理事件
事件传递与事件响应
触摸事件
触摸事件的相应方法
touchesBegan: withEvent: 一根或多根手指开始触摸屏幕
touchesMoved: withEvent: 一根或多根手指开始在屏幕上移动(重复执行)
touchesEnded: withEvent: 一根或多根手指触摸结束离开屏幕时执行
touchesCancelled: withEvent: 触摸意外取消执行(例如:正在触摸时接电话)
不接收触摸事件三种情况
不接收用户交互,UserInterActionEnable = NO;
影藏,hidden = YES;
透明,alpha = 0.0-0.01
当前视图未显示在父视图中(父视图无法将事件传递过来),例如:父视图的frame为CGRectZero
常用方法
-(UIResponder *)nextResponder 获取下一个响应者
–(BOOL)becomeFirctResponder 是否设置第一响应者
–(BOOL)resignFirstResponder 是否取消第一响应者
手势
iOS中的不同手势
UITapGestureRecognizer 点击手势
UIPinchGestureRecognizer 捏合手势
UIPanGestureRecognizer 平移手势
UISwipeGestureRecognizer 轻扫手势
UIRotationGestureRecognizer 旋转手势
UILongPressGestureRecognizer 长按手势
手势的状态
UIGestureRecognizerStatePossible 尚未识别何种手势(但可能已经出发了触摸手势),默认状态
UIGestureRecognizerBegan 手势已经开始,但这个过程可能发生变化,手势操作尚未完成
UIGestureRecognizerChanged 手势状态发生改变
UIGestureRecognizerEnded 手势识别操作完成(松开手指)
UIGestureRecognizerCancelled 手势被取消,恢复到默认状态
UIGestureRecognizerFailed 手势识别失败,恢复到默认状态
手势的添加创建
点击手势,其他手势相似
UITapGestureRecognizer *top = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction:)];
tap.numberOfTapsRequired = 1; //设置点击次数
tap.numberOfTouchesRequired = 1; //设置触摸的手指数
[self.view addGestureRecognizer: tap];