如何在没有内容滚动的情况下根据tableview滚动方向为视图设置动画

时间:2015-06-25 15:21:16

标签: ios header popup tableview shrink

我正在尝试实现特定的tableview行为(比如Facebook应用)。

我希望每次用户向上滚动时都会放大一个动态标题,当用户向下滚动时会被尖叫。

此外,我希望tableview能够产生推动标题的效果,而不是滚动tableview单元格。

我使用了这个方法:

- (void)scrollViewDidScroll:(UIScrollView *)aScrollView

在这个方法中,我计算了偏移量和方向,并调用了相应缩小或放大标题的方法

到目前为止一切顺利。

事实是动画正在使用tableview滚动执行。

为了避免它,我在tableview的顶部创建了一个自定义滚动视图,我对两个滚动视图进行了不同的分类。

在scrollview中,我创建了一个tableview的弱引用和一个布尔值,指示scrollview是否应返回tableview touch。

缩小\放大动画完成后,我更改了布尔值,这样它就会发出自定义scrollview信号,以便在我在滚动视图中实现的HitTest方法中返回tableview。

但是当用户继续滚动时没有调用hitTest(没有翻动手指),此外我的tableViewCell里面的按钮现在没有反应。

这是我的HitTest方法:

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

{

 UIView* result = [super hitTest:point withEvent:event];
if (_recieveTouchOnTable)
{

    return _table;

}
else
return result;

}

这是我的scrollViewDidScroll方法: (onProgress表示正在执行动画,因此请继续返回自定义scrollview) Tag = 2 =自定义滚动视图 Tag = 1 = tableview

- (void)scrollViewDidScroll:(UIScrollView *)aScrollView {

 CGFloat yVelocity = [aScrollView.panGestureRecognizer velocityInView:aScrollView].y;

CGFloat offset = lastCustomScrollViewContentOffset.y-aScrollView.contentOffset.y;

lastCustomScrollViewContentOffset =aScrollView.contentOffset;

if (yVelocity<0)
    offset = fabs(offset)*-1;

else if(yVelocity>0)
    offset = fabs(offset);

if (offset!=0 && aScrollView.tag == 2)
[self layoutViewAccorrdingToTableviewScorlingVelocity:offset];

if (!onProgress ){
      customScrollView.recieveTouchOnTable=YES;  
}

}

我错过了什么,或者有更简单的方法可以做到吗?

0 个答案:

没有答案