Мультитач координирует проблему iPhone - PullRequest
0 голосов
/ 10 июня 2011

Я пытаюсь найти координаты обоих касаний в мультитач.Этот код добавляет SIGABRT в строку «UITouch * touch2 = ...».Может ли кто-нибудь сказать мне, где я иду не так?

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    NSArray *touchArray = [touches allObjects];
    UITouch *touch1 = [touchArray objectAtIndex:0];
    UITouch *touch2 = [touchArray objectAtIndex:1];
    CGPoint firstTouch = [touch1 locationInView:self.view];
    CGPoint secondTouch = [touch2 locationInView:self.view];
}

Ответы [ 2 ]

1 голос
/ 10 июня 2011

Скорее всего, в массиве только одно касание. Вы должны проверить, что массив содержит индекс, прежде чем пытаться получить объект с этим индексом:

NSUInteger count = [array count];
id obj = (count > 1)? [array objectAtIndex:1] : nil;
id obj2 = (count > 2)? [array objectAtIndex:2] : nil;
1 голос
/ 10 июня 2011

Если вы хотите получить событие двойного щелчка, вам нужно проверить значение tapCount каждого объекта UITouch вместо того, имеет ли touches два объекта.

for (UITouch *touch in touches) {
    if (touch.tapCount==1) {
        // do something
    } else if (touch.tapCount==2) {
        // do something else
    }
}
...