美文网首页
UIScrollView滑动手势

UIScrollView滑动手势

作者: __May__ | 来源:发表于2018-07-06 16:57 被阅读0次


    最近因为项目需要,添加画笔功能  设计是仿微信的   微信的画笔 后面图片可缩放 移动  图片的移动是用2只手指以上触碰才可以移动。

    刚开始使用UIscrollView  发现画笔与UIscrollView 自带的拖拽手势起了冲突 ,自己曾用手势来实现缩放但是效果觉得没有UIscrollView 的好  所以想着尝试用UIscrollView  然后想法去屏蔽UIScrollView的panGestureRecognizer,

    自己曾用手势来实现缩放 但是效果觉得没有UIscrollView 的好  所以想着尝试用UIscrollView去屏蔽他的.

    scrollView..panGestureRecognizer 是readOnly 

    看了好多文章 找到解决方法  — 重写UIscrooView 的手势的代理方法

    首先建一个类继承自UIScrollView,

     重写下面方法  让scrollView 自带的手势不可用


    之后我这里是添加了一个需要两个手指才能滑动的手势 这样就不会跟我的画笔冲突了.下面摆上代码

    @implementationLNFingerContainerScrollView

    - (instancetype)init

    {

       self= [superinit];

       if(self) {

            [selfsetGesture];

        }

     returnself;

    }

    - (void)setGesture{

     _gesture=[[UIPanGestureRecognizeralloc]initWithTarget:selfaction:@selector(gestureAction:)];

     _gesture.minimumNumberOfTouches= 2;

        [selfaddGestureRecognizer:_gesture];

    }

    - (void)setFrame:(CGRect)frame{

        [supersetFrame:frame];

        [selfsetContentSize:CGSizeMake(frame.size.width, frame.size.height)];

    }

    - (void)setContentView:(UIView*)contentView{

     _contentView= contentView;

        [_contentViewremoveFromSuperview];

        [_contentViewsetFrame:self.bounds];

        [selfaddSubview:_contentView];

    }

    - (void)gestureAction:(UIPanGestureRecognizer*)sender{

     CGPointpt = [sender translationInView:self];

     CGPointoffset = self.contentOffset;

     CGFloatx = offset.x- pt.x;

     CGFloaty = offset.y- pt.y;

     if(x < 0) {

    x= 0;

        }elseif(x > self.contentSize.width- self.frame.size.width) {

    x = self.contentSize.width- self.frame.size.width;

        }

     if(y < 0) {

    y= 0;

        }

     if(y > self.contentSize.height- self.frame.size.height) {

            y =self.contentSize.height- self.frame.size.height;

        }

        [selfsetContentOffset:CGPointMake(x, y)];

    [sender setTranslation:CGPointMake(0, 0) inView:self];

    }

    - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer*)gestureRecognizer{

     if(gestureRecognizer == self.panGestureRecognizer) {

     returnNO;

        }

     returnYES;

    }

    @end

    相关文章

      网友评论

          本文标题:UIScrollView滑动手势

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