2013-04-17 83 views
4

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

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

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

回答

2

有一個UIGestureRecognizer的BOOL屬性cancelsTouchesInView。默認是肯定的。它設置爲NO,和觸摸將傳導至UIView的

也有看solution for this question

1

謝謝您的回答。該鏈接幫助我解決了我的部分問題。 我已將按鈕設置爲我的gestureRecognizer視圖的子視圖,現在我可以從其中一個按鈕開始滑動(並繼續使用按鈕作爲weel)。我設法防止按鍵使用下面的代碼去「向下」狀態:

UIPanGestureRecognizer *swipe = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(swipeDetected:)]; 
    swipe.maximumNumberOfTouches = 1; 
    swipe.delaysTouchesBegan =YES; 
    swipe.cancelsTouchesInView = YES; 
    [self.gestureRecognitionView addGestureRecognizer:swipe]; 
0

如果你想防止識別從接收觸摸可言,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; 
}