触摸事件

1.UIResponder对象

- 响应者对象,能与用户交互的就是响应者对象

- UIApplication、UIViewController、UIView都继承自UIResponder,因此它们都是响应者对象,都能够接收并处理事件

注意:

- 如果两根手指同时触摸一个View,那么View只会调用一次touchesBegan:withEvent:方法,touches参数中装着2个UITouch对象

- 如果这两根手指一前一后分开触摸同一个View,那么View会分别调用2次touchesBegan:withEvent:方法,并且每次调用时的touches参数中只包含一个UITouch对象。

- 根据touches中UITouch的个数可以判断出是单点触摸还是多点触摸

* 如果一根手指触摸屏幕叫做单点触摸

* 如果多根手指同时触摸屏幕叫做多点触摸


2.总结:在一次完整的触摸事件中touches集合中的UITouch对象也是在各个阶段共享的

3.介绍控件不能接受用户交互的情况

*演示要求:在控制器View中创建多个View,并且为每个UIView指定一个自定义View,实现touchesBegan方法。

1>控件的userInteractionEnabled = NO的情况下不能与用户交互(如果父容器不能与用户交互,那么在该容器中的所有子控件也不能与用户交互)

2>透明度小于等于0.01,alpha <= 0.01。

3>控件被隐藏的时候,hidden = YES。

4>如果子视图的位置超出了父视图的有效范围,那么子视图也是无法与用户交互的,即使设置了父视图的clipsToBounds = NO,也是无法与用户进行交互的。

5>默认情况下,从控件库中拖拽的UIImageView是无法接受用户的触摸事件的。

*UIImageView 默认是不支持多点触摸,也不响应用户事件的。

注意:直接从媒体库中把图片拖拽出进来(通过这种方式拖进来的UIImageView,默认即支持多点触摸也支持用户交互,并且图片框大小就是图片的实际大小)


4.手势识别:

- 触摸事件只有4个:

1>touchesBegan (按下)

2>touchesMoved(移动)

3>touchesEnded(抬起)

4>touchesCanceled(取消)

- iOS3.2之后,把触摸事件做了封装,对常用的手势进行了处理,封装了6种常见的手势

UITapGestureRecognizer(敲击)

UILongPressGestureRecognizer(长按)

UISwipeGestureRecognizer(轻扫)

UIRotationGestureRecognizer(旋转)

UIPinchGestureRecognizer(捏合,用于缩放)

UIPanGestureRecognizer(拖拽)








  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值