Scroll的响应链问题

背景情况:

loadView时创建一个scroll作为VC的view.叫BaseScroll

  • 上部分为两部分,一个是展示信息部分。
Scroll的响应链问题_第1张图片
展示信息

�* 一个是需要悬停的部分。


Scroll的响应链问题_第2张图片
需要悬停
  • 最下部是一个ContentScroll。包含两个table
Scroll的响应链问题_第3张图片
ContentScroll
现在的需求是
  1. 当悬停部分不在NavigationBar底部时,table执行上拉操作。table不作响应。由scroll做响应,如果scroll的contentSize足够,可以将悬停部分拉到顶部NavigationBar下方(即改变baseScroll的contentSet),悬停部分不动,如继续上拉则有table响应,滚动table的cell。如果scroll的contentSize不够,悬停部分拉上去(接触不到NavigationBar)后回弹。(table下拉将baseScroll拉回初始位置即contentOffset为0)


    Scroll的响应链问题_第4张图片
    悬停部分不在NavigationBar底部
  2. 当悬停部分在NavigationBar底部时,table下拉时,如果table的contentOffset 不为0,即已显示table的第一条数据时。由scroll响应事件,将悬停部分拉下来。(table上拉由table响应)


    Scroll的响应链问题_第5张图片
    悬停部分在NavigationBar底部
目前的问题是
  1. 如果在scroll的代理方法里处理,事件已经传递到table上,此时不能让baseScroll处理事件。

  2. 如果在scroll的hit方法里处理响应者,无法判断当前事件是滑动还是触摸。因为baseScroll上部有按钮需要点击。

以上。再次表示感谢。

后记

暂时用手势处理解决需求,但不完美。有时会出现移动量为0而达不到理想效果的情况。核心代码如下:

Scroll的响应链问题_第6张图片
判断手势是否响应

你可能感兴趣的:(Scroll的响应链问题)