关于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
- 关于UIScrollView的一点小发现
- 关于Google文档的一点小发现~
- 关于窗体控件的一点小发现
- 关于jquery的ajax的一点小发现
- 关于随机数的一点新的小发现
- 有关onpropertychange事件的一点小发现!
- 做leetcode时的一点小发现
- 一点小发现
- 【Unity3D】关于UGUI事件的手动挂载一点小发现
- 关于DataGrid 和DataSet的一点发现
- 关于.net 中 Mysettings 的一点发现
- 关于CPU时间片轮询的一点发现
- [StoryToolKit]关于Activity的一点发现
- 关于object.innerHTML的一点发现
- 关于xml自定义形状的一点发现
- 关于ARP欺骗的一点发现
- 关于okhttp下载文件的一点发现
- Android关于图标形状的一点发现
- 元素互不相邻的最大和子数组
- C6-1 最大子数组和
- hdu 1114 Piggy-Bank(完全背包)
- Mysql SQL查询今天、昨天、n天内、第n天
- 文件超过某个大小就删除(C语言)
- 关于UIScrollView的一点小发现
- 页面静态化
- 【LeetCode】51. N-Queens
- 图片自适应父元素的大小,并左右上下居中
- C++文件写入
- Mysql 字符串函数汇总
- gradle基础讲解系列1
- django学习10 数据库 增删改查 简单方法
- LiteOS学习第七篇——系统滴答