I think this is the expected behavior because: "This method is called before touching Began: withEvent: is called for the gesture recognizer to be touched again." So, I think this means that the recognizer is not yet aware of its location. To get the location, use the touch argument instead:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)recognizer shouldReceiveTouch:(UITouch *)touch { NSLog(@"%@", NSStringFromCGPoint([touch locationInView:self.view])); ...
source share