2014-10-09 46 views
0

我有一個菜單控制器,當它彈出時有一個集合視圖。它的工作方式是,當用戶在集合視圖之外輕擊時,它應該使菜單消失。當您在集合視圖之外點按時,菜單會關閉,但當您在集合視圖內點按時,該菜單也會關閉。我似乎無法讓手勢識別器在不在收集視圖內時解散。我在這裏和谷歌環顧四周,我還沒有找到任何解決方案,但工程。下面是該處理抽頭的功能的代碼:無法讓UITapGestureRecognizer識別控制器中的特定視圖

@IBAction func handleTap(sender: MenuTapGestureRecognizer) 
    { 
     if (sender.state == .Ended && sender.view == menuCollectionView) 
     { 
      NSLog("menuCollectionView") 
     } 
     else if (sender.state == .Ended && sender.view == mainView) 
     { 
      self.dismissViewControllerAnimated(true, completion: nil) 
     } 

    } 

mainView是連接到最上面的圖和menuCollectionView是參照UICollectionView的參考。

回答

2

我懷疑你只附加了手勢識別器到你的mainView。這很好,但你會想要使用sender.locationInView(menuCollectionView)並檢查點是否在你的集合視圖的範圍內。

if (CGRectContainsPoint(menuCollectionView.bounds, sender.locationInView(menuCollectionView))) { 
    // do stuff. 
} 
+0

我試圖用做一個檢查,我不斷收到那CGPoint是無法轉換爲ObjC布爾「我假設我檢查這個錯誤,然後 – SamG 2014-10-09 15:35:19

+0

'sender.locationInView(:這是通過以下完成menuCollectionView)將會返回一個'CGPoint',標記你的事件在'menuCollectionView'中的位置。你可以使用'CGRectContainsPoint(menuCollectionView.bounds,sender.locationInView(menuCollectionView))'。 – 2014-10-09 15:39:00

+0

謝謝伊恩,這工作完美!我使用CGRectContainsPoint並直接過濾到集合視圖。 :)被困在那兩個星期了,謝謝! – SamG 2014-10-09 15:50:31

相關問題