我想检测整个屏幕上的滑动,但是,屏幕包含UIButton
s,如果用户点击这些按钮之一,我希望触发 Touch Up Inside 事件。我在UIView
屏幕顶部创建了一个,并UIPanGestureRecognizer
在其上添加了一个来检测滑动,但是现在当我检测到它是点击而不是滑动时,我需要通过该视图传递手势。
我知道如何区分手势,但我不知道如何将它传递给下面的视图。
有人可以帮忙吗?谢谢!
我想检测整个屏幕上的滑动,但是,屏幕包含UIButton
s,如果用户点击这些按钮之一,我希望触发 Touch Up Inside 事件。我在UIView
屏幕顶部创建了一个,并UIPanGestureRecognizer
在其上添加了一个来检测滑动,但是现在当我检测到它是点击而不是滑动时,我需要通过该视图传递手势。
我知道如何区分手势,但我不知道如何将它传递给下面的视图。
有人可以帮忙吗?谢谢!
感谢您的回答。该链接帮助我解决了部分问题。我已将按钮设置为我的 gestureRecognizer 视图的子视图,现在我可以从其中一个按钮开始滑动(并继续使用这些按钮)。我设法通过使用以下代码来防止按钮进入“向下”状态:
UIPanGestureRecognizer *swipe = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(swipeDetected:)];
swipe.maximumNumberOfTouches = 1;
swipe.delaysTouchesBegan =YES;
swipe.cancelsTouchesInView = YES;
[self.gestureRecognitionView addGestureRecognizer:swipe];
UIGestureRecognizer cancelsTouchesInView 有一个 BOOL 属性。默认为是。将其设置为 NO ,触摸将传递给 UIView
也看看 这个问题的解决方案
如果您想完全阻止识别器接收触摸,可以使用UIGestureRecognizerDelegate
一种方法:gestureRecognizer:shouldReceiveTouch:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
// don't override any other recognizers
if (gestureRecognizer != panRecognizer) {
return YES;
}
CGPoint touchedPoint = [touch locationInView:self.someButton];
return CGRectContainsPoint(self.someButton.bounds, touchedPoint) == NO;
}