clipstobounds 元素下不可见部分的元素的可访问性

Accessibility of elements underneath the invisble part of cliptobound(ed) element

我有一个 MKMapView mainMap 的正方形比例,它的宽度等于 iPhone 屏幕宽度。我使用以下方法使其循环:

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

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

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

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

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