将UIView上的手势转移到Swift中的UITableView - iOS

时间:2018-04-20 10:20:24

标签: ios swift uitableview uiview uigesturerecognizer

我在页面顶部有一个UIView的布局,在它下面,我有一个UITableView

我想要做的是将UIView上的动作互动转移到UITableView,因此当用户在UIView上进行向上/向下拖动时,{ {1}}垂直滚动。

我尝试了以下代码

UITableView

但它以某种方式从tableView.gestureRecognizers?.forEach { uiView.addGestureRecognizer($0) } 删除了gestureRecognizers:/

视错误:UITableView不能是UIView 的<{1}}

1 个答案:

答案 0 :(得分:2)

那是棘手的

什么是问题?

  

您的顶视图不允许通过其背后的视图...

什么是可能的解决方案

  1. 通过所有接触来查看它背后(似乎不可能或实际上很难)
  2. 告诉窗口忽略顶视图上的触摸(简易)
  3. 第二种选择更好,更容易。

    所以你需要做的是创建UIViewoverride

    的子类
     override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView?  
    

    如果您在hitTest操作

    上找到相同的观点,则返回nil

    这里经过测试和工作的例子

    class PassThroughME : UIView {
        override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
            return super.hitTest(point, with: event) == self ? nil : self
        }
    }
    

    现在使用PassThroughME或者通过在故事板中为您的视图添加类或者以编程方式添加视图

    检查图像我有黑色的彩色视图,顶部是0.7 alpha我仍然可以滚动

    enter image description here

    希望它有用