iOS Swift:将滑动事件从嵌套控制器传播到控制器下方

Posted

技术标签:

【中文标题】iOS Swift:将滑动事件从嵌套控制器传播到控制器下方【英文标题】:iOS Swift: Propagates Swipe Events from nester controller to underneath controller 【发布时间】:2019-10-05 15:09:11 【问题描述】:

我有一个覆盖一半屏幕的嵌套 UIViewController。

在这个控制器下有父 ViewController。

我只想将横向滑动事件传播到底部(父)控制器。

我认为我应该使用以下函数

override func point(inside point: CGPoint, with event: UIEvent?) -> Bool 
    return (my test)
    )
  

但我也知道这个函数应该应用于 UIView,而不是 UIViewController。所以我被卡住了,我不知道如何继续。

【问题讨论】:

【参考方案1】:

你可以创建

class SomeView:UIView 
   override func point(inside point: CGPoint, with event: UIEvent?) -> Bool 
     return  true/false
   

并将其分配给IB中孩子的vc'view,您也可以在vc内部实现这个

override func touchesBegan(_ touches: Set<AnyHashable>, withEvent event: UIEvent) 
    var touch: UITouch? = touches.first
    //location is relative to the current view
    // do something with the touched point
    if touch?.view == childVC.view  
    

编辑:

要将滑动操作传播给父级,添加一个委托并将滑动操作传递给子级,并在触发时通知父级与委托

【讨论】:

从 func point() 我怎么能理解这是一个水平平移手势?

以上是关于iOS Swift:将滑动事件从嵌套控制器传播到控制器下方的主要内容,如果未能解决你的问题,请参考以下文章

Swift 中类似控制中心的滑动视图实现

iOS Swift - 在呈现新的视图控制器时呈现视图控制器向下滑动

ios的scrollview嵌套webview,解决事件冲突

从ViewPager嵌套RecyclerView再嵌套RecyclerView看安卓事件分发机制

使用 Swift 在 iOS 中远程控制事件

ios中怎样监听uislider滑动结束