美文网首页
手势拖动tableview

手势拖动tableview

作者: 无去_b4d3 | 来源:发表于2017-12-19 22:32 被阅读0次

    可以实现向下拖动tableview的时候,tableview不滚动,但frame改变,松手会回弹,在tableview向上滚动一段距离的情况下,拖动tableview,offset改变,frame不变

    1.首先要让添加的手势和原本的手势都起作用

    - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {

        if ([otherGestureRecognizer.view isKindOfClass:[UITableView class]]) {

            return YES;

        }

            return NO;

        }

    2.在添加的手势在began的时候禁掉tableview的滚动

    - (void)heihei:(UIPanGestureRecognizer *)pan

    {

        if (pan.enabled == NO) {

            return ;

        }

        CGPoint translation = [pan translationInView:pan.view];

        pan.view.transform = CGAffineTransformTranslate(pan.view.transform, 0, translation.y);

        [pan setTranslation:CGPointZero inView:pan.view];

        //滑到顶部时,上移

        if (_tableView.frame.origin.y < 0) {

                _tableView.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen             mainScreen].bounds.size.height);

            //超出边界 禁掉手势

            pan.enabled = NO;

    }

    if (pan.state == UIGestureRecognizerStateBegan) {

            _tableView.scrollEnabled = NO;

    } else if (pan.state == UIGestureRecognizerStateEnded) {

        //手势结束 回复手势

        pan.enabled = YES;

        _tableView.scrollEnabled = YES;

        [UIView animateWithDuration:0.5 animations:^{

                _tableView.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen     mainScreen].bounds.size.height);

        }];

        }

    }

    3.在滚动结束后根据offset判断是否要禁掉添加的手势

    - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

    {

        if (_tableView.contentOffset.y > 0) {

            _pan.enabled = NO;    

            _tableView.scrollEnabled = YES;

        } else {

            _pan.enabled = YES;

        }

    }

    相关文章

      网友评论

          本文标题:手势拖动tableview

          本文链接:https://www.haomeiwen.com/subject/cjoiwttx.html