我有一些自定义操作表。它们是完全自定义的控件,而不是基于 UIActionSheet。我将它们作为子视图添加到视图控制器并为它们设置动画。它们在旧设备上运行良好,但在 iPhone 11 上我遇到了问题。在最像 UIActionSheet 的那些上,顶部的 Action 项是不可点击的。其他项目是可点击的。在调试器中,我看到代码认为我在自定义操作表之外单击。
我还注意到,从底部向上滑动并呈现集合视图的其他类似自定义控件之一不会像在旧设备上那样在屏幕底部齐平显示。有点高了 但它工作正常。
问题是在我为每个自定义控件制作的 XIB 文件中,我使用的是 SafeArea,并且控件的自定义内容视图与安全区域齐平。我展示控件的视图控制器没有使用底部安全区域——这是设计的有意部分,因此内容会一直到底部——该屏幕上没有显示标签栏。
但在 iPhone 11 上,安全区域较低。因此,在呈现视图时,显然在 XIB 文件中使用安全区域意味着视图显示在更高的位置,而不是与屏幕底部齐平,尽管我给出了坐标。但很明显,操作系统的其他部分正在“看到”内容视图,就好像它是我说它应该更低的地方一样,与屏幕底部齐平,因此触摸灵敏度在 y 坐标处被切断我曾要求视图的顶部在哪里。