2014-07-07 116 views
-2

我在視圖中有兩個子視圖。框架是平等的。一個視圖有一個滑動左手勢識別器,而B視圖有一個滑動右手勢識別器。 B在A後面,所以我只能觸發滑動左手勢。我怎樣才能同時接收?如何在另一個視圖後面接收觸摸事件?

+0

附加swipegesture recongnizer到窗口。然後你需要處理滑動。 –

回答

2
  1. 在背面的圖不會迴應,因爲,這是在後面。
  2. 對於兩個手勢同時做出響應(同時向左+向右),請將UIGestureRecognizerDelegate添加到任一手勢並按照以下建議處理shouldRecognizeSimultaneouslyWithGestureRecognizer
  3. 如果您希望B響應某個手勢(即使它部分被A隱藏),請重新考慮您的層次結構:在B上添加第三個視圖,作爲佔位符,位於A & B(稱爲C)手勢識別器。

您的委託:

// leftGesture 
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer 
    shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer 
    *)otherGestureRecognizer 
{ 
    return otherGestureRecognizer == rightGesture; 
} 
+0

感謝您的回覆,但這不是我想要的。我編輯帖子。 – ZZB

+0

視圖層次結構+手勢齊頭並進。根據你的圖紙,A在B以上;如果你想讓B的隱藏部分對選擇器作出響應,最好的辦法是創建一個不可見的視圖C,其尺寸與B的尺寸相同,並使其浮動到A以上。 – SwiftArchitect

+0

修復**這個問題它與答案相符:你現在有一個孤立問題的批准答覆。然後用你的編輯寫**另一個**帖子。 – SwiftArchitect

1

我該如何接收?

添加兩個手勢識別器來查看A,因爲這是前面的視圖。由於您需要通過視圖B處理正確的滑動手勢,請將視圖B作爲右滑動手勢識別器的目標。

更好的選擇可能是讓您的視圖控制器成爲兩個手勢識別器的目標,並讓它理清如何處理用戶的手勢。這有助於讓用戶瞭解如何設置用戶界面的業務 - 他們只需要遵循視圖控制器的指示。如果你採納該計劃,您的視圖控制器可能是這樣的部分:

- (void)viewDidLoad 
{ 
    UISwipeGestureController *leftSwipe = [[UISwipeGestureController alloc] initWithTarget:self action:@selector(leftSwipe:)]; 
    leftSwipe.direction = UISwipeGestureRecognizerDirectionLeft; 
    UISwipeGestureController *rightSwipe = [[UISwipeGestureController alloc] initWithTarget:self action:@selector(rightSwipe:)]; 
    rightSwipe.direction = UISwipeGestureRecognizerDirectionRight; 

    [self.viewA addGestureRecognizer:leftSwipe]; 
    [self.viewA addGestureRecognizer:rightSwipe]; 
} 

- (IBAction)leftSwipe:(id)sender 
{ 
    [self.viewA doSomething]; 
} 

- (IBAction)rightSwipe:(id)sender 
{ 
    [self.viewB doSomethingElse]; 
} 
+0

感謝您的回覆,但這不是我想要的。我編輯帖子來澄清我的問題。 – ZZB

+0

恐怕你的編輯很難理解,而且你很難明白爲什麼你想這樣做。進一步的解釋是必要的 – Caleb

+0

我用截圖添加更多細節。對不起,我不清楚的解釋。 – ZZB

相關問題