У меня есть UIView с двумя распознавателями жестов. Оба распознают кран двумя пальцами: один для верхней половины экрана, другой для нижней части экрана. В этом UIView у меня есть 4 кнопки, которые охватывают весь экран (каждая кнопка - четверть экрана).Подвижность UIButton распознавателя жестов
Я использую распознаватель жестов, чтобы определить, когда пользователь одновременно нажимает 2 кнопки, и я все еще хочу распознавать обычные касания кнопок.
Я настроил все, и он отлично работает. Однако при нажатии одним пальцем тень на кнопке появляется на Touch Up, а не на Touch Down. И это странно. Я пытался сменить задержкиTouchesBegan без успеха.
Есть ли способ иметь оба поведения? Обнаруживать прикосновения двумя пальцами, но иметь «нормальное поведение», когда есть только один палец? В противном случае я могу заставить нажатое состояние UIbutton?
Вот как мне настроить мои жесты:
-(void)initGestureRecognition{
handClapTapGestureRecognizer = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handClapDetected:)];
handClapTapGestureRecognizer.numberOfTouchesRequired = 2;
handClapTapGestureRecognizer.numberOfTapsRequired = 1;
handClapTapGestureRecognizer.cancelsTouchesInView = YES;
[self.gestureRecognitionView addGestureRecognizer:handClapTapGestureRecognizer];
handClapTapGestureRecognizer.delegate = self;
jumpTapGestureRecognizer = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(jumpDetected:)];
jumpTapGestureRecognizer.numberOfTouchesRequired = 2;
jumpTapGestureRecognizer.numberOfTapsRequired = 1;
jumpTapGestureRecognizer.cancelsTouchesInView = YES;
[self.gestureRecognitionView addGestureRecognizer:jumpTapGestureRecognizer];
jumpTapGestureRecognizer.delegate = self;
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
return NO;
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
if ([gestureRecognizer isEqual:handClapTapGestureRecognizer] && [touch locationInView:self.view].y > self.view.frame.size.height/2)
return NO;
if ([gestureRecognizer isEqual:jumpTapGestureRecognizer] && [touch locationInView:self.view].y < self.view.frame.size.height/2)
return NO;
return YES;
}
Я знаю, что моя проблема аналогична той одной: UIButton inside a view that has a UITapGestureRecognizer но разница в том, что в моем случае, поведение нормально, и я просто пытаюсь получить тень на кнопке на Touch DOwn, а не на Touch Up.
Благодаря
Спасибо, это работает. Не знаю, почему я не думал об этом ... –