【问题标题】:Pass taps through a UIPanGestureRecognizer通过 UIPanGestureRecognizer 传递水龙头
【发布时间】:2013-04-10 01:04:43
【问题描述】:
我想检测整个屏幕上的滑动,但是,屏幕包含UIButtons,如果用户点击其中一个按钮,我希望触发 Touch Up Inside 事件。
我在屏幕顶部创建了一个UIView,并在其上添加了一个UIPanGestureRecognizer 以检测滑动,但是现在当我检测到它是点击而不是滑动时,我需要通过该视图传递手势.
我知道如何区分手势,但我不知道如何将其传递给下面的视图。
有人可以帮忙吗?谢谢!
【问题讨论】:
标签:
iphone
ios
objective-c
uigesturerecognizer
【解决方案1】:
感谢您的回答。该链接帮助我解决了部分问题。
我已将按钮设置为我的 gestureRecognizer 视图的子视图,现在我可以从其中一个按钮开始滑动(并继续使用这些按钮)。我设法通过使用以下代码来防止按钮进入“向下”状态:
UIPanGestureRecognizer *swipe = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(swipeDetected:)];
swipe.maximumNumberOfTouches = 1;
swipe.delaysTouchesBegan =YES;
swipe.cancelsTouchesInView = YES;
[self.gestureRecognitionView addGestureRecognizer:swipe];
【解决方案3】:
如果你想完全阻止识别器接收到触摸,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;
}