我有一个包含两个 subview 的 View :

  • subview A,一个UIView(包含其他 View ,其中包含UIButton,带有手势识别器的 View ...)
  • subview B,一个UIScrollView(包含一些 View ,但是具有透明区域)。

  • 滚动 View 位于 subview A的顶部,并具有完整的设备宽度/高度。我希望用户能够(通过透明区域)与滚动 View 下方的所有这些按钮和手势调整器进行交互,同时仍然能够滚动(因此,传递点击测试无效)。

    似乎很容易完成的任务,但是我无法使它正常工作。滚动 View 始终阻止所有触摸。

    知道我将如何实现吗?谢谢!

    最佳答案

    您应该子类化UIScrollView并覆盖以下方法:

    -(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
    

    如果此方法返回NO,则滚动事件对于触摸事件将是“透明的”。

    由于只希望触摸在滚动 View 的透明区域中时,才使滚动 View 对触摸事件“透明”,因此您的实现应如下所示:
    - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {
         return ![self isPointInsideATransparentRegion:point]; //you need to implement isPointInsideATransparentRegion to check whether the point touched is in a transparent region or not
    }
    

    关于ios - 通过UIScrollView将某些接触传递给基础 View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21530965/

    10-09 06:29
    查看更多