ios开发之触摸&手势识别

概要: 4个触摸事件、6个手势识别、响应者链条

1、4个触摸事件

1> 触摸事件主要是针对视图的,包括

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;

 

2、6个手势识别

–UITapGestureRecognizer(点按)
–UIPinchGestureRecognizer(捏合)
–UIPanGestureRecognizer(拖动)
–UISwipeGestureRecognizer(轻扫)
–UIRotationGestureRecognizer(旋转)
–UILongPressGestureRecognizer(长按)

3、响应者链条

1. hitTest方法,用于检测具体响应用户触摸点视图的方法

    - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event

    与

    - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event;

    在视图内部返回YES,否则返回NO

    联合使用来判断用户触摸点的位置是否在指定的视图内部,如果是,表示该视图可以接收用户交互。

    以上两个方法会被循环递归,多次调用!直至找到最适合响应用户请求的视图!

    提示:一般情况下,不要轻易重写这两个方法,因为一旦方法内部使用了消耗量大的代码,会严重影响系统的性能!

    窍门:一旦出现示例中需要拦截触摸事件的情况,可以与美工或者策划人员沟通,调整界面!

    1) 如果返回nil,表示没有响应的视图

    2) 如果返回视图,表示该视图接收用户的响应

 2. 接收用户触摸响应的几个条件

    1) self.userInteractionEnabled = YES;   允许接收用户响应

    2) self.hidden = NO;                    只有现实的视图才能接收用户触摸

    3) self.alpha > 0.01;                   视图的透明度一定要可见

    提示:并不是所有的控件都默认接收用户交互的,譬如:UIImageView,UILabel等

 3. 参数说明

    point   用户触摸的点,相对于当前视图坐标系的坐标点

    event   用户触摸事件,开发中一般程序员不使用,该事件用于在响应者链条上传递

 

转载于:https://www.cnblogs.com/liufeng24/p/3500653.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值