1、在单层web页面上经常使用如下的方法判断上下滑动
- (void)scrollViewDidScroll:(UIScrollView*)scrollView
{
if(scrollView ==self.tableview)
{
if (self.tableview.contentOffset.y > _oldY)
{
//向上滑动
[[NSNotificationCenter defaultCenter]postNotificationName:CCWNewsScrollUp object:nil];
}
else
{
//向下滑动
[[NSNotificationCenter defaultCenter]postNotificationName:CCWNewsScrollDown object:nil];
}
if (self.tableview.contentOffset.y == 0)
{
[[NSNotificationCenter defaultCenter]postNotificationName:CCWNewsScrollToTop object:nil];
}
}
}
- (void)scrollViewWillBeginDragging:(UIScrollView*)scrollView{
// 获取开始拖拽时tableview偏移量
self.oldY = self.tableview.contentOffset.y;
}
2、但是当web页面时多层嵌套的时候,使用上面的方法就会失效,只有在滑动到最底部继续上滑才会触发上面的方法。这个时候就要使用其他的方法 ,如监控手指的滑动
(1)先在web页面添加滑动手势
//添加手势监听上下滑动
UIPanGestureRecognizer *apan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(goPanNext:)];
apan.delegate=self;
apan.maximumNumberOfTouches=1;
apan.minimumNumberOfTouches=1;
[_webView addGestureRecognizer:apan];
(2)实现滑动手势的方法
- (void)goPanNext:(UIPanGestureRecognizer*)sender
{
if (sender.state == UIGestureRecognizerStateChanged)
{
[self commitTranslation:[sender translationInView:self]];
}
}
(3)下面是监控手势上下左右滑动的方法
/** 判断手势方向 */
- (void)commitTranslation:(CGPoint)translation
{
CGFloatabsX =fabs(translation.x);
CGFloatabsY =fabs(translation.y);
// 设置滑动有效距离
if(MAX(absX, absY) < 10)
return;
if(absX > absY )
{
if(translation.x<0)
{
//向左滑动
}
else
{
//向右滑动
}
}
elseif(absY > absX)
{
if(translation.y<0)
{
//向上滑动
[[NSNotificationCenter defaultCenter]postNotificationName:CCWNewsScrollUp object:nil];
}
else
{
//向下滑动
[[NSNotificationCenter defaultCenter]postNotificationName:CCWNewsScrollDown object:nil];
}
}
}