touchesBegan,touchesMoved和anyObject问题

时间:2011-05-06 17:01:18

标签: objective-c cocoa-touch

这是我的测试代码

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    gestureStartPoint = [touch locationInView:self.view];
    NSLog(@"start (%f, %f)", gestureStartPoint.x, gestureStartPoint.y);
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    CGPoint currentPosition = [touch locationInView:self.view];
    NSLog(@"move (%f, %f)", currentPosition.x, currentPosition.y);
}

从我的理解[触摸任何对象]将返回任何对象(触摸屏幕的任何手指),所以我在模拟器中通过选项+重复点击屏幕开始我的测试结果是我所期望的x,y点随机改变从一个到另一个。 我的问题是关于touchesMoved我用两根手指触摸(选项+点击)我开始拖动并期望x,y会像touchesBegan一样随机变化,但结果让我感到惊讶,x,y将是相同的(同一手指co - 或者)我是从touchesBegan那里得到的。

所以这种行为在某处有解释?

1 个答案:

答案 0 :(得分:1)

来自:NSSet Class Reference

- (id)anyObject
  

返回值
其中一个对象   集合,如果集合包含否则为nil   对象。返回的对象被选中   在集合的方便 - 选择   不保证是随机的。

我假设它们在内部按顺序保存(或根据坐标生成)并按顺序添加到集合中,并且方便集合按顺序将它们提供给您