【问题标题】:Accessibility of elements underneath the invisble part of cliptobound(ed) elementcliptobounds 的不可见部分下的元素的可访问性)元素
【发布时间】:2015-10-19 20:46:23
【问题描述】:

我有一个正方形的MKMapViewmainMap,它的宽度等于iPhone的屏幕宽度。我通过使用使其循环:

mainMap.layer.cornerRadius = mainMap.frame.width/2
mainMap.clipsToBounds = true

现在我有一个UIButton,它位于mapView 的下方,它只是部分可见。

这一切都很好,但是当我点击按钮时,点击被 mapView 的不可见部分捕获。

是否需要额外的步骤才能使 mapView 的不可见部分不干扰用户界面?

【问题讨论】:

  • 是的,有。好的,我回答了这个问题,我得到赏金了吗? :)
  • 我在这里看不到答案?
  • 如果你的回答有帮助,是的,你确实得到了赏金
  • 您没有要求解决方案。您刚刚询问是否需要额外的步骤。
  • 这会给你一个超智能徽章。

标签: swift cliptobounds


【解决方案1】:

您需要覆盖背景视图上的命中测试 (hitTest:withEvent:)。你会打电话给super,大多数时候你会返回它返回的任何东西。但是如果它返回地图视图,您将根据地图视图的框架检查点(第一个参数)并确定它是否在圆圈内 - 这很容易计算,因为 CGPath 有一个CGPathContainsPoint 函数。如果是,则返回 super 给您的地图视图。但如果不是,则返回nil。触摸现在将“穿透”到它后面的任何东西,如果那是按钮,则按钮将接收点击。

【讨论】:

  • 我的书中有很多讨论和代码示例:apeth.com/iOSBook/ch18.html#_hit_testing
  • 好东西,我去看看
  • 无论如何判断点击是否在视图的不可见部分?
  • 你的意思是,隐形就是隐形,而不仅仅是知道圆圈在哪里?当然,你可以只看像素透明度。同样,这在我的书中就在那里(我已经给了你链接)。但至少在这种情况下,知道圆圈在哪里对我来说似乎更明显。
  • 我试图检查点击是否在 mapView 的不可见部分的原因是 UIButton(位于 mapview 下方)的某个部分与 mapview 重叠,我不想点击在那个部分被认为是点击 uibutton。
最近更新 更多