2014-10-09 66 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