在swift中忽略/拦截子视图上的滑动

时间:2017-02-15 15:34:11

标签: ios swift xcode

我目前在自定义视图控制器上运行单页swift应用程序(用于iOS)。在该视图控制器中,我嵌入了另一个自定义UIView来显示一些内容/处理一些用户交互。

我想知道是否有办法拦截在自定义视图控制器中注册的UISwipe,并且如果它出现在嵌入视图中,则快速忽略它。我知道,对于点击,我可以将我的视图控制器设置为点击手势识别器的委托,并执行以下操作:

// not exact syntax
func gestureRecognizer(touch){
     if (touch.view == self.embeddedView || (touch.view.isDescendantOf(embeddedView))!){
           return false
      }
   return true
}

但是我找不到任何对滑动执行相同操作的功能。有人能指出我正确的方向吗?

3 个答案:

答案 0 :(得分:3)

将自定义视图控制器设置为滑动手势的代理并覆盖shouldReceiveTouch方法。

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool {
     return !CGRectContainsPoint(embeddedView.bounds, touch.locationInView(embeddedView))
}

答案 1 :(得分:0)

迅速5


func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
    return !containerView.bounds.contains(touch.location(in: containerView))
}

答案 2 :(得分:-1)

有一个UISwipeGestureRecognizer,您可以这样实现:

let swipeRight = UISwipeGestureRecognizer(target: self, action: #selector(self.swipeRightDetected))
self.embeddedView.addGestureRecognizer(swipeRight)

请查看此答案以获取更多信息:https://stackoverflow.com/a/24215844/5664183