2015-11-06 47 views
0

我有一個ContainerView與兩個子視圖AB,
A is a TableViewControllerB is a CollectionViewController

在B中,當我press on a collectionViewCell a detailView加載。 detailView是一個簡單的UIViewControllerUIImageView

我已經在B上設置了UISwipeGesture,在左側顯示tableViewController A

我需要的
現在我不想顯示tableViewController當我在的DetailView,
所以我需要禁用UISwipegesture但只有當我在的DetailView

無法禁用UITapGesture childView

我做了什麼
我設置了UIGestureDelegate,但委託方法沒有被調用。 With userInteractionEnambled = NO沒有任何變化,除非我在detailView中插入以下行myContainerViewController.view.userInteractionEnambled = NO;

在此先感謝

+1

你能發表一些你的代碼並重新格式化你的問題嗎? – maxshuty

+0

設置手勢識別器的委託是處理此問題的適當方式。您需要在委託中實現'gestureRecognizer:shouldReceiveTouch:'。 –

+0

我試過,但我無法設法調用該方法。我已經把myGetsure.delegate = self和但沒有任何反應 – jack87

回答

0

您可以在屬性保存滑動手勢的參考和disabile它,當你表現出這樣的細節控制器:

self.swipeGesture.enabled = NO; 

然後你就可以重新啓用它主視圖控制器的viewWillAppear方法,或者當您關閉詳細視圖時。

+0

好的,你能請你解釋一下嗎?我已經試過把myCollectionViewController prepareForSegue myGesture.enabled = NO,但沒有任何變化 – jack87

+0

嘗試刪除手勢識別器的代表。如果禁用它,手勢不應該觸發,但如果它正在觸發,請嘗試檢查屬性是否已正確初始化。 – lorenzoliveto

+0

你是對的!如果我把NSLog(@「%@」,self.tapGestureRecognizer.enabled);我在控制檯中獲得null值,那麼我該怎麼做? II仍然無法確定要做什麼 – jack87