2013-01-02 50 views
2

我在UISwipeGestureRecognizer中遇到了一些問題,它在UIPageViewController項目的第一頁上工作,但不在所有後面的頁面上。UIPageViewController丟失UISwipeGestureRecognizer

該配置基於Apple的PageViewController示例代碼。 問題中的UISwipeGestureRecognizer添加到故事板中,以及可在每個頁面上正常工作的UITapGestureRecognizer。

我檢查目標,選擇器,視圖在視圖控制器上是否正確,但找不到任何異常。

有人注意到了類似的行爲並找到了解決方案。

我應該說,我試圖以相同的結果以編程方式添加滑動手勢識別器。

+0

您是否希望滑動識別器在頁面視圖控制器的內容區域上工作? – Macondo2Seattle

+0

它實際上是視圖控制器視圖的一部分(由數據源添加)。 –

回答

2

我遇到了同樣的問題,並找到了兩種解決方法。

1.這種方式可以同時識別Pan和Swipes,這可能是您想要的。這不是我想要的,因爲我不想在頁面上下滑動時改變頁面。對於這種方法,您必須讓您的課程成爲滑動手勢識別器的代表。

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 
{ 
    return YES; 
} 

2.本辦法防止泛從走,直到它知道舒瓦茨都失敗了,這意味着刷卡絕不會在同一時間作爲一個泛發生。如果你的滑動是垂直的,這隻會對你有用,因爲水平的滑動總是會阻止鍋,我相信。

//Cheat to get the pan gesture from the pageviewcontroller. You should iterate and make sure you get the right one. 
UIPanGestureRecognizer * panGR = self.pageViewController.gestureRecognizers[0];  

// Add the page view controller's gesture recognizers to the book view controller's view so that the gestures are started more easily. 
UISwipeGestureRecognizer * swipeGestureRec = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(openArchive:)]; 
swipeGestureRec.direction = UISwipeGestureRecognizerDirectionDown; 
[panGR requireGestureRecognizerToFail:swipeGestureRec]; 
[self.view addGestureRecognizer:swipeGestureRec]; 
swipeGestureRec = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(closeArchive:)]; 
swipeGestureRec.direction = UISwipeGestureRecognizerDirectionUp; 
[panGR requireGestureRecognizerToFail:swipeGestureRec]; 
[self.view addGestureRecognizer:swipeGestureRec];