博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ios开发之多点触摸
阅读量:7069 次
发布时间:2019-06-28

本文共 996 字,大约阅读时间需要 3 分钟。

  一般,Tap、pinch,pan、swipe只是一个简单的单个触摸,它有一定的局限性,所以多点触摸诞生了~为实现多点触摸,首先得做下列事情

  • 设置view的属性multipleTouchEnabled = YES(注意了。。。默认值是NO);
  • 使用CFDictionaryRef来保存触摸过程的参数 

对于使用多点触摸处理事件,你必须频繁地存储以后进行触摸比较的触摸状态。例如,你要比较每个触摸的结束点位置和原始位置,你可以在touchesBegan:withEvent: 方法中获取每个触摸的原始位置(使用locationInView:方法),然后存储在CFDictionaryRef对象中,使用UITouch对象地址作为KEY。然后你可以在touchesEnded:withEvent: 方法中取出原始点,和当前点进行比较。

需要注意的是这里使用CFDictionaryRef对象而不是NSDitionary对象,因为UITouch类没有实现NSCopying协议。

代码
1 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 2      [self cacheBeginPointForTouches:touches]; 3 } 4 - (void)cacheBeginPointForTouches:(NSSet *)touches { 5     if ([touches count] > 0) { 6         for (UITouch *touch in touches) { 7             CGPoint *point = (CGPoint *)CFDictionaryGetValue(touchBeginPoints, 8 touch); 9 } }10     if (point == NULL) {11         point = (CGPoint *)malloc(sizeof(CGPoint));12         CFDictionarySetValue(touchBeginPoints, touch, point);13 }14     *point = [touch locationInView:view.superview];15 }

 

 

转载地址:http://ushll.baihongyu.com/

你可能感兴趣的文章
Java数据库连接
查看>>
修改tomcat的默认编码
查看>>
Android中XML格式数据的简单使用
查看>>
css样式初始化
查看>>
Static静态---笔记A
查看>>
算法之旅
查看>>
string.xml中的字符添加空格
查看>>
CF 85E Guard Towers——二分图染色
查看>>
C#创建datatable (转)
查看>>
问题小结
查看>>
6,视图和路由
查看>>
空链接推荐用"###"。
查看>>
BASE64编码和解码(VC源代码) 并 内存加载 CImage 图像
查看>>
A*算法 (MATLAB) -路径搜索
查看>>
HTML <form> 标签的 enctype 属性
查看>>
git从自己账号切换到公司的账号,剪项目失败
查看>>
go语言的“MSDN”(ubuntu12 && 通过apt-get安装的go语言)
查看>>
sqlmap常用技巧
查看>>
python多进程运行测试用例的写报告为空的问题与解决
查看>>
关于Python的数据分析工具
查看>>