iOS8: descarta la hoja de formulario en el grifo externo

Actualmente estamos usando una solución similar a la mencionada aquí (ver la respuesta de Ares). Esto no parece funcionar en iOS8.

Tengo una hoja de formulario y quiero descartarla tan pronto como el usuario pulsa la vista atenuada 'detrás' de la hoja de formulario. Previamente, esto parecía posible al agregar un reconocimiento de gestos a la window, y verificar la location del toque para ver si estaba fuera de la hoja de formulario actual;

También noté que el punto necesita ser convertido (el interruptor xey) del dispositivo se usa en modo horizontal. Aparte de eso, ahora solo recibe gestos que ocurrieron desde dentro de la hoja de formulario, donde antes cualquier gesto de toque en cualquier lugar de la pantalla desencadenaría un evento.

- (void)viewDidLoad { [super viewDidLoad]; self.recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapBehind:)]; self.recognizer.numberOfTapsRequinetworking = 1; self.recognizer.cancelsTouchesInView = NO; [self.view.window addGestureRecognizer:self.recognizer]; } - (void)handleTapBehind:(UITapGestureRecognizer *)sender { if (sender.state == UIGestureRecognizerStateEnded) { CGPoint location = [sender locationInView:nil]; if (UIInterfaceOrientationIsLandscape([UIApplication shanetworkingApplication].statusBarOrientation) && IOS8) { location = CGPointMake(location.y, location.x); } // if tap outside pincode inputscreen BOOL inView = [self.view pointInside:[self.view convertPoint:location fromView:self.view.window] withEvent:nil]; if (!inView) { [self.view.window removeGestureRecognizer:sender]; [self dismissViewControllerAnimated:YES completion:nil]; } } } 

Como se menciona en el hilo al que hace reference, debe agregar un UIGestureRecognizerDelegate e implementar los methods:

 - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer { return YES; } - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { return YES; } - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { return YES; }