是否有可访问的库函数来获取一组UITouches的质心?

时间:2013-02-06 11:04:57

标签: ios cocoa-touch

来自the docs:如果UIGestureRecognizer跟踪多次触摸,locationInView:将(通常)返回:

  

......手势所涉及的触摸的质心。

据我所知,如果您没有使用手势识别器而是直接通过touchesBegan:withEvent:等跟踪触摸,则只能询问{{1}中的每个人UITouch它的touches

我显然可以迭代所有的触摸并自己计算质心,但我猜测必须有一些iOS库函数可以做到这一点。我是对的,这个功能可以访问吗?或者,有没有其他方法可以获得相同的功能,还是应该停止抱怨并自己计算质心?

1 个答案:

答案 0 :(得分:0)

AFAIK,Apple没有提供任何内容。写得相当简单......

// returns (0,0) if touches is nil or empty
-(CGPoint) centroidOfTouches:(NSSet *)touches inView:(UIView *)view
{
    CGPoint centroid = CGPointZero, 
    curTouchPoint;
    for (UITouch *touch in touches) {
        curTouchPoint = [touch locationInView:view];
        centroid.x += curTouchPoint.x;
        centroid.y += curTouchPoint.y;
    }
    centroid.x /= [touches count];
    centroid.y /= [touches count];
    return centroid;
}