ios事件处理

1.ios处理三种类型的事件:多点触碰、重力加速、远程控制;
2.一些事件组合成为常见手势,被封装在UIKit中以方便编程,大部分需求可直接使用现有手势来完成,如有特殊需求也可自己扩展;
3.现有的手势有6种:
    拍击UITapGestureRecognizer (任意次数的拍击)  
    向里或向外捏UIPinchGestureRecognizer (用于缩放)  
    摇动或者拖拽UIPanGestureRecognizer (拖动) 
    擦碰UISwipeGestureRecognizer (以任意方向)  
    旋转UIRotationGestureRecognizer (手指朝相反方向移动)  
    长按UILongPressGestureRecognizer (长按)
4.UIEvent对象封装了触摸,摇晃以及远程控制等信息,通过响应链找到应该响应事件的对象,再对具体的对象处理事件;
5.使用手势的方式一般为:创建并配置一个手势识别对象,将该对象与一个view相关联,实现手势处理方法;
6.通过gestureRecognizer可以拿到手势在view中的位置;
7.requireGestureRecognizerToFail方法可以让其它的手势识别不起作用,从而达到调整手势识别优先级的作用;
8.手势识别器的代理可以实现是否应开始接收手势等方法,当某些条件不满足时,可禁止手势识别,比如非目标view上的手势不进行识别;
9.将gestureRecognizer关联到控件的父类上,则其子类会接收到原始的事件而非手势;一般情况下,系统会无试图
10.事件处理过程有几步:触碰开始,触碰移动,触碰结束,触碰取消,对应到四个方法可以对应:touchesBegan:withEvent:, touchesMoved:withEvent:, touchesEnded:withEvent:, and touchesCancelled:withEvent:在UIResponder的子类中实现这四个方法,在其中指定自己自定义的手势对象状态为已识别或识别失败,就可以达到自定义手势的功能;
11.触碰事件通过hit-testing来找到响应者,首先会从窗口中最大的view开始,如果触碰在该范围内,则遍历其子view,判断是否在某个子view,递归下去,直到某个最小的对象为止;hit-testing方法也可重载,可实现特定的响应对象查找逻辑;
12.其它事件则通过响应者链来查找响应者,可以调用对象的becomeFirstResponder来使之响应事件,远程和motion事件的响应者必须实现指定的协议方法;
13.默认响应者链顺序为:初始view—>父view—>...—>viewcontroller—>window—>Application;
14.userInteractionEnabled可关闭事件响应,而beginIgnoringInteractionEvents和endIgnoringInteractionEvents可暂时忽略事件响应;
15.重力加速感应的事件只能感知到事件的发生,实际要做的动作还需要使用重力加速的类库来获取当前的坐标值来根据需求进行。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值