簡體   English   中英

通過UIPanGestureRecognizer輕擊

[英]Pass taps through a UIPanGestureRecognizer

我想檢測整個屏幕上的滑動,但是,屏幕包含UIButton ,如果用戶點擊其中一個按鈕,我希望觸發Touch Up Inside事件。 我在屏幕頂部創建了一個UIView ,並在其上添加了一個UIPanGestureRecognizer來檢測滑動,但現在我需要通過該視圖傳遞手勢,當我檢測到它是點擊而不是滑動。

我知道如何區分手勢,但我不知道如何將其傳遞給下面的視圖。

任何人都可以幫忙嗎? 謝謝!

UIGestureRecognizer有一個BOOL屬性cancelsTouchesInView。 默認是肯定的。 設置為NO,觸摸將通過UIView

還要看看這個問題解決方案

感謝您的回答。 該鏈接幫助我解決了部分問題。 我已將按鈕設置為我的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM