在多层嵌套的web页面上怎么监控上下左右滑动

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];

        }

    }

}

你可能感兴趣的:(在多层嵌套的web页面上怎么监控上下左右滑动)