如何知道 UIScrollView 触摸顶部 scrollView 是不是与另一个 View 的 CGPoint 相交

Posted

技术标签:

【中文标题】如何知道 UIScrollView 触摸顶部 scrollView 是不是与另一个 View 的 CGPoint 相交【英文标题】:How to know if UIScrollView touches on top scrollView intersects with a CGPoint of another View如何知道 UIScrollView 触摸顶部 scrollView 是否与另一个 View 的 CGPoint 相交 【发布时间】:2017-06-21 15:45:50 【问题描述】:

我有 2 个 UIScrollView。它们不是彼此的子视图。一个只是坐在另一个上方作为覆盖,用于获得这种效果:

现在,我在第二个 ScrollView(坐在下面的那个)上有一个 UIButton。 我无法点击此按钮,因为顶部滚动视图正在捕获所有触摸。

这就是我想要完成的。但我被困住了。

    我在 UIScrollView 上放了一个识别的 UITapGestureRecognizer 我想转换水龙头的 CGPoint 并将其转换到第二个滚动视图上的位置 如果该点与第二个 UIScrollView 上的 UIButton 的位置相交,那么我将只打印一条消息。

这是我的代码。请帮我看看有什么问题:

@IBAction func bufferviewCliked (sender: UITapGestureRecognizer) 
    // First I try to get the point of the object clicked inside as a point on
    // the main self.view
    let locationInMainView = sender.location(in: self.view)

    // Next I try to convert that point, into a point on my backgroundScrollView
    let touchPointInSecondView = self.view.convert(locationInMainView, from: backGround)

    // If the point intersects with the point on the UIButton in the backgroundScrollView
    // Then print hi
    if followButton.frame.contains(touchPointInSecondView) 
        print("HI")
    

问题是我的点坐标是错误的,我不确定我是否使用了正确的东西。

【问题讨论】:

【参考方案1】:

您可以从按钮获取 locationInView

@IBAction func bufferviewCliked (sender: UITapGestureRecognizer) 
   let location = sender.location(in: followButton)

   // If the point intersects with the point on the UIButton in the backgroundScrollView
   // Then print hi
   if followButton.bounds.contains(location) 
        print("HI")
   

【讨论】:

以上是关于如何知道 UIScrollView 触摸顶部 scrollView 是不是与另一个 View 的 CGPoint 相交的主要内容,如果未能解决你的问题,请参考以下文章

如何一键同时控制两个 UIScrollView?

如何知道用户仍在 UIScrollView 中触摸屏幕?

UIScrollView 的触摸事件

以编程方式将触摸传递给 UIScrollView 以进行滚动

无论触摸发生在哪里,都滚动 UIScrollView

iPhone - 知道UIScrollView是否达到顶部或底部