在 iPhone 11 上,使用自定义视图,为啥我的 Tap Recognizer 或 UIButton 在视图的顶部没有响应但在视图的下部有效
Posted
技术标签:
【中文标题】在 iPhone 11 上,使用自定义视图,为啥我的 Tap Recognizer 或 UIButton 在视图的顶部没有响应但在视图的下部有效【英文标题】:On iPhone 11, using a custom view, why is my Tap Recognizer or UIButton not responding on top part of View but works on lower part of View在 iPhone 11 上,使用自定义视图,为什么我的 Tap Recognizer 或 UIButton 在视图的顶部没有响应但在视图的下部有效 【发布时间】:2020-09-14 16:19:23 【问题描述】:我有一些自定义操作表。它们是完全自定义的控件,而不是基于 UIActionSheet。我将它们作为子视图添加到视图控制器并为它们设置动画。它们在旧设备上运行良好,但在 iPhone 11 上我遇到了问题。在最像 UIActionSheet 的那些上,顶部的 Action 项是不可点击的。其他项目是可点击的。在调试器中,我看到代码认为我在自定义操作表之外单击。
我还注意到,我的其他类似自定义控件之一从底部向上滑动并呈现一个集合视图,不会像在旧设备上那样在屏幕底部齐平显示。有点高了但它工作正常。
【问题讨论】:
【参考方案1】:问题在于,在我为每个自定义控件制作的 XIB 文件中,我使用的是 SafeArea,并且控件的自定义内容视图与安全区域齐平。我展示控件的视图控制器没有使用底部安全区域 - 这是设计的有意部分,以便内容一直到底部 - 该屏幕上不显示标签栏。
但在 iPhone 11 上,安全区域较低。因此,在呈现视图时,显然在 XIB 文件中使用安全区域意味着视图显示在更高的位置,而不是与屏幕底部齐平,尽管我给出了坐标。但很明显,操作系统的其他部分正在“看到”内容视图,就好像它是我说它应该更低的地方一样,与屏幕底部齐平,因此触摸灵敏度在 y 坐标处被切断我要求视图的顶部在哪里。
【讨论】:
以上是关于在 iPhone 11 上,使用自定义视图,为啥我的 Tap Recognizer 或 UIButton 在视图的顶部没有响应但在视图的下部有效的主要内容,如果未能解决你的问题,请参考以下文章
在 UIViewController 的主视图中加载自定义 UIView
尝试在 iphone 中使用自定义单元格视图关闭文本字段中的键盘?