IBAction не запускается при добавлении viewDidLoad
У меня есть несколько IBActions, прикрепленных к кнопкам UIB. IBActions работают нормально, пока я не добавлю следующий код:
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"View Did Load");
[self addGestureRecognizersToView:drawImage];
}
После того, как я добавлю этот кусок кода, IBActions не запускаются. Кнопки UIB подсвечиваются, когда я их касаюсь, но ни один из кодов IBAction не срабатывает.
Вот мой код addGestureRecognizer:
- (void)addGestureRecognizersToView:(UIImageView *)theView {
UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
[panGesture setMaximumNumberOfTouches:2];
[panGesture setMinimumNumberOfTouches:1];
//panGesture.delegate = drawImage;
[theView addGestureRecognizer:panGesture];
[panGesture release];
UITapGestureRecognizer *doubleFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)];
[doubleFingerTap setNumberOfTapsRequired:2];
[self.view addGestureRecognizer:doubleFingerTap];
[doubleFingerTap release];
UITapGestureRecognizer *singleFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
[singleFingerTap setNumberOfTapsRequired:1];
[self.view addGestureRecognizer:singleFingerTap];
[singleFingerTap release];
}
Если я закомментирую код singleFingerTap, он будет работать. Я предполагаю, что я не должен использовать alloc, так как я уже выделил это однажды в doubleFingerTap?
Есть идеи о том, чего мне здесь не хватает?
2 ответа
Вы одним нажатием пальца мешает нормальному поведению кнопки. Вы должны убедиться, что прикосновения проходят беспрепятственно.
[singleFingerTap setCancelsTouchesInView:NO];
Похоже, UITapGestureRecognizer перехватывает сигналы, которые в противном случае обрабатывались бы кнопками UIB.
Ты можешь использовать gestureRecognizer:shouldReceiveTouch:
:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
return (touch.view != self.button1 &&
touch.view != self.button2);
}
Кроме того, вы можете взломать цепочку респондента.