添加UIGestureRecognizer优先于所有其他交互

时间:2015-10-20 03:56:46

标签: ios swift uigesturerecognizer

当我点击UIButton时,屏幕底部会显示UIView MyView屏幕的三分之一。我希望当我点击这个视图之外的某个地方时,它会消失。

我考虑在MyView下添加另一个透明的UIView并在其上添加一个带有解除功能的标签手势,但我确定有比这更清晰的东西。

所以我考虑添加点击手势MyTapGesture来解除self.view UIViewController上的MyView。问题是在这个视图之外,我还有其他UIControls和手势,它们同时捕获任何触摸,而不是MyTapGesture。

如何让MyTapGesture成为MyView外部的优先手势并忽略所有其他手势,点击等......?

1 个答案:

答案 0 :(得分:1)

您可能必须使用手势委托方法来处理两个tapGestureRecognizer根据场景激活您需要的方法

#pragma mark - UIGestureRecognizerDelegate methods
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer {

return YES;
}

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
   if ([tapGestureRecognizer1 isEqual:gestureRecognizer]) {

   return [tapGestureRecognizer2 isEqual:otherGestureRecognizer];
   }

 if ([tapGestureRecognizer2 isEqual:gestureRecognizer]) {

return [tapGestureRecognizer1 isEqual:otherGestureRecognizer];
}

return NO;
}