技术库 > Object-C

ios开发 多点触摸

技术库:tec.5lulu.com

from:tec.5lulu.com

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

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

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

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

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
     [self cacheBeginPointForTouches:touches];
}
- (void)cacheBeginPointForTouches:(NSSet *)touches {
    if ([touches count] > 0) {
        for (UITouch *touch in touches) {
            CGPoint *point = (CGPoint *)CFDictionaryGetValue(touchBeginPoints,
touch);
} }
    if (point == NULL) {
        point = (CGPoint *)malloc(sizeof(CGPoint));
        CFDictionarySetValue(touchBeginPoints, touch, point);
}
    *point = [touch locationInView:view.superview];
}

ios开发 多点触摸


标签: ios 事件本文链接 http://tec.5lulu.com/detail/108azn4wm21dl8sd8.html

我来评分 :6.5
1

转载注明:转自5lulu技术库

本站遵循:署名-非商业性使用-禁止演绎 3.0 共享协议

www.5lulu.com