It works fine on my end.
If you breakpoint in
gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
can you ensure that touch.view is actually self.view in your implementation?
Pregunta
Interface:
@interface MyViewController : UIViewController <UIGestureRecognizerDelegate>
Implementation:
- (void)dismissPopup {
NSLog(@"popup view dismissed");
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
shouldReceiveTouch:(UITouch *)touch {
return touch.view == self.view;
}
-(void)viewDidLoad
{
[super viewDidLoad];
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(dismissPopup)];
tapRecognizer.numberOfTapsRequired = 1;
tapRecognizer.delegate = self;
[self.view addGestureRecognizer:tapRecognizer];
//...
}
The dismiss method is never triggered, why? I am on iOS7, using storyboard.
Log of touch.view
MYAPP[5779:60b] <UIView: 0x17ecd8b0; frame = (0 0; 320 418);
autoresize = RM+BM; layer = <CALayer: 0x17ecd910>>
self.view:
MYAPP[5779:60b] <UIView: 0x17ecd590; frame = (0 64; 320 504);
autoresize = RM+BM; gestureRecognizers = <NSArray: 0x17eb2c70>; layer
= <CALayer: 0x17ecd5f0>>
Log from debugger: http://dpaste.com/1768718/
Solución
It works fine on my end.
If you breakpoint in
gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
can you ensure that touch.view is actually self.view in your implementation?