不透明的UIView不让我在它背后滚动UIView

时间:2014-03-24 14:19:32

标签: ios iphone objective-c uiview mkmapview

我有一个看起来像这样的视图层次结构。

buttonsView< - 带有1-3个小按钮的UIView MKMapView< - 最底层视图

当我的buttonsView显示时,如果用户没有触摸任何按钮,我仍然希望用户能够滚动MKMapView。

我尝试了userInteractionEnabled = NO的不同组合,但没有任何帮助。

2 个答案:

答案 0 :(得分:1)

您有几种方法可以解决这个问题:

  • 带有三个小按钮的顶视图可以小得多,因此只覆盖三个小按钮所需的区域。这样,顶视图将不会覆盖地图视图,您仍然可以滚动它。

  • 实施您自己的hitTest / pointInside功能,让顶层视图决定是否要捕捉活动(当您点按其中一个按钮时)或者它决定将事件进一步发送到响应者链(当用户点击其他任何内容时)。有关可能的方法,请参阅此处:Allowing interaction with a UIView under another UIView

答案 1 :(得分:0)

前面的视图会进行所有交互。无论它是否透明。您应该将手势传递到底部的MKMapView。 另一种方法是使用按钮调整视图大小以覆盖整个MKMapView,但仅覆盖带按钮的部分。这样,用户只能在没有按钮的区域滚动。