![](/img/trans.png)
[英]UIView on top of UIScrollview, pass through only scrolls, not taps
[英]Pass taps through a UIPanGestureRecognizer
我想檢測整個屏幕上的滑動,但是,屏幕包含UIButton
,如果用戶點擊其中一個按鈕,我希望觸發Touch Up Inside事件。 我在屏幕頂部創建了一個UIView
,並在其上添加了一個UIPanGestureRecognizer
來檢測滑動,但現在我需要通過該視圖傳遞手勢,當我檢測到它是點擊而不是滑動。
我知道如何區分手勢,但我不知道如何將其傳遞給下面的視圖。
任何人都可以幫忙嗎? 謝謝!
感謝您的回答。 該鏈接幫助我解決了部分問題。 我已將按鈕設置為我的gestureRecognizer視圖的子視圖,現在我可以從其中一個按鈕開始滑動(並繼續使用按鈕作為weel)。 我設法通過使用以下代碼阻止按鈕進入“關閉”狀態:
UIPanGestureRecognizer *swipe = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(swipeDetected:)];
swipe.maximumNumberOfTouches = 1;
swipe.delaysTouchesBegan =YES;
swipe.cancelsTouchesInView = YES;
[self.gestureRecognitionView addGestureRecognizer:swipe];
如果你想阻止識別器接收觸摸, 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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.