1

Мне нужно отслеживать, где касаются, когда пользователь зажимает, чтобы сделать какие-то причудливые кусочки, для игры, не связанной с масштабированием. Я могу обнаружить щипцы, но я не могу найти расположение кранов во время пинча, только средняя точка (даже при использовании закрытых переменных касаний не работает).Мне нужна помощь в подклассе UIPinchGestureRecognizer, чтобы найти местоположение касаний во время пинча.

Идеальный результат будет (где Box2DPinchRecognizer это имя моего UIPinchRecognizer подкласса):

Box2DPinchRecognizer *pinchRecognizer = [[Box2DPinchRecognizer alloc] initWithTarget:self action:@selector(pinchGesture:) withObject:(NSArray*)touches]; 

Где прикасается массив из двух CGPoints указывая, где ваши пальцы.

ответ

3

Не нужно ничего подкласса. Вы должны быть в состоянии задать любой UIGestureRecognizer для расположения своих текущих касаний в методе действий:

- (void)pinchGesture:(UIGestureRecognizer *)recognizer 
{ 
    NSUInteger numberOfTouches = recognizer.numberOfTouches; 
    NSMutableArray *touchLocations = [NSMutableArray arrayWithCapacity:numberOfTouches]; 
    for (NSInteger touchIndex = 0; touchIndex < numberOfTouches; touchIndex++) { 
     CGPoint location = [recognizer locationOfTouch:touchIndex inView:self.view]; 
     [touchLocations addObject:[NSValue valueWithCGPoint:location]]; 
    } 
    ... 
} 


Edit:
В конце коды квадратных скобок добавляются.

+0

Это путь лучше. Легенда, спасибо. – glenstorey

+1

Обратите внимание, что я не знаю, будет ли порядок касаний одним и тем же (то есть, если одно касание всегда имеет тот же самый индекс, если он не останавливается) при каждом выполнении метода. Мне было бы интересно узнать, так ли это. –