所以我一直在努力解决这个问题已经很久了,我相信我已经尝试了所有可用的StackOverflow解决方案,但我仍然无法做到这一点。
我的社交网络应用程序中的每个其他视图都有一个“Curtain View”
当窗帘处于默认模式时,它就是这样
当窗帘处于“向下” - 模式时,它就是这样的样子
窗帘是包含在滚动视图中的视图。
为了能够向下拉窗帘,我不得不将内容大小设置为覆盖绿色按钮,这可以在图像中看到。
内容大小类似于下面此图片中的黑色描边区域。
我的问题。当scrollview处于默认模式时,我无法弄清楚如何制作我的绿色按钮,“关注,每个人,附近”可点击/可触摸。滚动视图的内容大小显然是在按钮上,但我怎么能避免呢?
我已尝试使用 hitTest 覆盖,尝试通过事件链传递触摸事件和
其他类似的解决方案但没有运气我不能让这个工作。
我使用包含scrollview的自定义视图控制器实现了窗帘视图。 然后将此视图添加到根视图中。
答案 0 :(得分:1)
当UIScrollView
处于默认位置时,您应隐藏它:
scrollView.hidden = YES;
这会阻止UIScrollView
阻止其下方按钮的触摸。
隐藏视图会从其窗口中消失,并且不会接收输入事件。但它仍保留在超级视图的子视图列表中,并像往常一样参与自动调整。
然后在拖下窗帘之前将隐藏设置为NO。
修改强>
回答评论中的问题:
我如何知道我的滚动视图是否处于默认位置,是否没有触发事件?
通过检查滚动视图上的contentOffset
属性,您应该能够确定滚动视图是处于默认(隐藏)位置还是处于向下位置(显示)。
如果我将它设置为隐藏,窗帘的图像是否会消失?是的,它会。如果您希望视图仍然部分显示在顶部而不是完全消失,则需要采用不同的方法(请参阅下面的一些建议)。
滚动视图应该用手指“拖动”(当然)。因此,它需要始终触发事件。您可以在主视图上检测触摸/平移手势,并使滚动视图根据该手势向下/向上移动。手势实际上不需要在scrollview内部开始。
以下是我发现有用的一些链接:
UIScrollView
,就像你一样。希望这有帮助!