onInterceptTouchEvent等touch事件传递机制理解

TouchEvent事件传递
  • 方法A:dispatchTouchEvent:
  • 方法B:onInterceptTouchEvent:这个方法比较复杂
  • 方法C:onTouchEvent

    1.You will receive the down event here.
    每次down事件都不管parent返回值,都会往下传递
    2.The down event will be handled either by a child of this view group, or given to your own onTouchEvent() method to handle; this means you should implement onTouchEvent() to return true, so you will continue to see the rest of the gesture (instead of looking for a parent view to handle it). Also, by returning true from onTouchEvent(), you will not receive any following events in onInterceptTouchEvent() and all touch processing must happen in onTouchEvent() like normal.
    这段是比较复杂的描述,一旦你return true,你将不会在这个方法中获得剩下的event(除了cancel)(但是测试发现父类retrun true 且onTouchEvent也return true,子类也换回true时,父类仍然能够接受到所以event)

  • 父B return false 子B return true:子C return true 则 父C方法将不会被调用 子B也接受不到剩下的event,父B仍然能够接受到剩下的event

  • 父B return false 子B return true:子C return false,则只有父A/C接受到剩下的event
  • 父B return false 子B return false 子C return true 则 子A/C, 父A/B会接受剩下的event
requestDisallowInterceptTouchEvent使用
  • 子类可以调用分类这个方法,当子类自身不消费Event时,参数传true时,则父控件不会继续传递和消费改event

  • 改技巧当嵌套使用时,有时需要父控件拦截event,有时不需要父控件拦截,比较使用

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值