Обнаруживайте все места касания в просмотре с помощью быстрого движения пальца

Мне было интересно, есть ли способ распознать каждое местоположение UITouch.

Слежу за местоположением моего пальца в прикосновениях Перемещался как:

UITouch *touch = [touches anyObject];
CGPoint p = [touch locationInView:self];

У меня проблемы с определением местоположения "p", если я быстро двигаю пальцем. Он просто не будет читать каждую позицию X или Y, но некоторые из них упадут.

Пример: я слежу за своим местоположением касания с помощью NSLog, и если я быстро проведу пальцем по iPad, сообщение NSLog покажет мне местоположение Y, например: ... 281 301 322 346 375 ...


person MOzeb    schedule 23.10.2015    source источник


Ответы (2)


Это внутреннее поведение фреймворка. Вы можете безопасно принимать промежуточные точки, следуя наклону линии. Я имею в виду, что ваше начальное местоположение (x1, y1), а конечное местоположение (x2, y2), тогда вы можете найти все промежуточные точки.

Когда вы измените направление или путь, вы получите новую точку в touchMoved.

person Apurv    schedule 23.10.2015
comment
Я понимаю, о чем ты говоришь. Но не нашел для этого хорошего решения. Я отслеживаю местоположение касания, чтобы выполнить HitTest, если мое касание сталкивается с каким-либо видом. - person MOzeb; 25.10.2015

Вы можете использовать жест, чтобы получить местоположение, используя приведенный ниже код

UILongPressGestureRecognizer *gr = [[UILongPressGestureRecognizer alloc] init];
            [gr addTarget:self action:@selector(userLongPressed:)];
            [self.view addGestureRecognizer:gr];

затем в методе userLongPressed:

CGPoint point = [recognizer locationInView:self.view];

Точка NSLog предоставит вам все местоположения ......

Пожалуйста, дайте мне знать, если вам нужна дополнительная информация ..

person sandy    schedule 23.10.2015
comment
NSLog дает мне результат nan, если я попытаюсь распечатать местоположения x и y? - person MOzeb; 23.10.2015
comment
используйте: если (распознаватель.state == UIGestureRecognizerStateChanged) {точка CGPoint = [распознаватель locationInView: self.view]; } - person sandy; 23.10.2015
comment
Странно ведет себя. Иногда местоположения x и y ниже нуля, и они все время одинаковы. Но иногда я получаю правильное местоположение, но результат такой же, как и когда я использовал touchMoved, местоположения X и Y все еще опускались / увеличивались более чем на 1. - person MOzeb; 23.10.2015