我想要在整個屏幕上檢測滑動,但是,屏幕包含UIButton
s,並且如果用戶點擊其中一個按鈕,我想觸發Touch Up Inside事件。 我在屏幕頂部創建了一個UIView
,並在其上添加了一個UIPanGestureRecognizer
來檢測滑動,但現在當我檢測到它是輕擊而非滑動時,需要通過該視圖傳遞手勢。通過UIPanGestureRecognizer傳遞水龍頭
我知道如何區分手勢,但我不知道如何將它傳遞給下面的視圖。
任何人都可以幫忙嗎?謝謝!
我想要在整個屏幕上檢測滑動,但是,屏幕包含UIButton
s,並且如果用戶點擊其中一個按鈕,我想觸發Touch Up Inside事件。 我在屏幕頂部創建了一個UIView
,並在其上添加了一個UIPanGestureRecognizer
來檢測滑動,但現在當我檢測到它是輕擊而非滑動時,需要通過該視圖傳遞手勢。通過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;
}