У меня есть приложение, которое позволяет пользователю обводить линии на экране. Я делаю это, записывая точки в 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. Я подумал, что спрошу здесь, прежде чем идти по этой дороге.