关于UIScrollView的一点小发现

来源:互联网 发布:mac电磁阀型号 编辑:程序博客网 时间:2024/05/16 17:25
先简单介绍我的项目,利用UIView重载drawRect方法来实现在UIView中用手指写字画画。

这个时候肯定要能放大缩小,要不然一个手机屏幕能容纳的下的东西实在不多。
我本身是想用UIPanGestureRecognizer和UIPinchGestureRecognizer来实现UIView放大拖动效果的,然而在实际拖动时,有严重bug。
相信很多人都知道UIScrollView可以用来实现图片的放大缩小。所以我所采用的方法是将自己的能绘图的UIView作为subView添加到UIScrollView中。这个时候,UIScrollView中由于有自带的UIPanGestureRecognizer,所以和我的view中添加的UIPanGestureRecognizer相冲突,然后我就用touchesBegin、touchesMoved和touchesEnded+setNeedsDisplay来实现书写。这样添加完UIView之后,自定义UIScrollView,实现下面的三个方法:

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{    [self touchesShouldBegin:touches withEvent:event inContentView:_drawView];}-(BOOL)touchesShouldBegin:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view{    return YES;}-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{    return _drawView;}

就可以实现在UIScrollView中的UIView中书写,然而放大或者缩小之后,只能响应拖拽动作,并不能书写,看了很多大神的博客之后并没有找到解决办法,在探索了一番之后,我找到了解决方法,继续添加以下方法:

-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{    if(scrollView.panGestureRecognizer.numberOfTouches == 1){        self.scrollEnabled = NO;    }else if(scrollView.panGestureRecognizer.numberOfTouches == 2){        self.scrollEnabled = YES;    }}

command+R测试期望效果成功,只是书写反应较慢,有待改进。
如果有类似的使用场景,可以用上这个办法。

0 0
原创粉丝点击