zoukankan      html  css  js  c++  java
  • ios开发之多点触摸

      一般,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 }
  • 相关阅读:
    python中if __name__ == '__main__': 的解析
    CPPUTest 单元测试框架(针对 C 单元测试的使用说明)
    哈希表详解
    使用RSS提升DPDK应用的性能(转)
    DPDK内存管理-----rte_mbuf(转)
    DPDK内存管理-----(二)rte_mempool内存管理
    DPDK内存管理(1)(转)
    Scala + IntelliJ IDEA
    什么是消息队列中间件
    微信小程序直播
  • 原文地址:https://www.cnblogs.com/salam/p/ios_mulitpletouch.html
Copyright © 2011-2022 走看看