UIScreenEdgePanGestureRecognizer failing to recognize gesture on right edge

ios, ios7, objective-c, uigesturerecognizer, uipangesturerecognizer

Solution

I've managed to create a workaround. It is pretty straightforward. I've subclassed UIWindow and used touchesBegan/touchesMoved/etc. methods to simulate gesture recognition.

It works. UIWindow is not rotated automatically, so I have to transform touch coordinates accordingly.

Here is my version of the transformation:

- (CGPoint)transformPoint:(CGPoint)point {
    CGPoint pointInView = point;

    if ([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortraitUpsideDown) {
        pointInView.x = self.bounds.size.width - pointInView.x;
        pointInView.y = self.bounds.size.height - pointInView.y;
    } else if ([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeLeft) {
        CGFloat x = pointInView.x;
        CGFloat y = pointInView.y;
        pointInView = CGPointMake(self.bounds.size.height - y, x);
    } else if ([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeRight) {
        CGFloat x = pointInView.x;
        CGFloat y = pointInView.y;
        pointInView = CGPointMake(y, self.bounds.size.width - x);
    }
    return pointInView;
}

Problem

I am having an issue where i have defined a UIScreenEdgePanGestureRecognizer to detect pan gesture appearing on the right edge of my device but the gesture is recognized sporadically: I have the following code: ``` _swipeInLeftGestureRecognizer = [[UIScreenEdgePanGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeInFromRightEdge:)]; _swipeInLeftGestureRecognizer.minimumNumberOfTouches = 1; _swipeInLeftGestureRecognizer.maximumNumberOfTouches = 1; [_swipeInLeftGestureRecognizer setEdges:UIRectEdgeRight]; [self.view addGestureRecognizer:_swipeInLeftGestureRecognizer]; - (void)handleSwipeInFromRightEdge:(UIGestureRecognizer*)sender { NSLog(@"swipe from right edge!!!!"); } ``` The gesture is attached to a view with nothing on it. Am I missing something?

Original source