У меня есть приложение, которое позволяет пользователю отслеживать линии на экране. Я делаю это, записывая точки в UIPanGestureRecognizer:
-(void)handlePanFrom:(UIPanGestureRecognizer *)recognizer
{
CGPoint pixelPos = [recognizer locationInView:rootViewController.glView];
NSLog(@"recorded point %f,%f",pixelPos.x,pixelPos.y);
}
Это прекрасно работает. Тем не менее, я очень заинтересован в первом пункте, который пользователь коснулся, прежде чем он начал панорамирование. Но приведенный выше код дает мне только точки, которые произошли после , когда жест был распознан как панорамирование (против касания).
Из документации видно, что может быть нелегкий способ определить изначально подключенное местоположение в API UIPanGestureRecognizer. Хотя в UIPanGestureRecognizer.h я нашел это объявление:
CGPoint _firstScreenLocation;
... который кажется частным, так что не повезло. Я подумываю о том, чтобы полностью выйти за пределы системы UIGestureRecognizer, чтобы просто захватить эту точку с начальным нажатием, и позже вернуться к ней, когда узнаю, что пользователь действительно начал UIPanGesture. Я думал, что спрошу здесь, прежде чем идти по этой дороге.