【发布时间】:2018-11-18 20:05:15
【问题描述】:
我有一个视图,我指定为我的视图控制器的inputAccessoryView。我调整了约束,使其位于 iPhone X(X、XR、XS、XS Max)上的 home 指示器上方。通过在我的视图控制器中将canBecomeFirstResponder 设置为true,当键盘被隐藏时,我将inputAccessoryView 固定在屏幕底部。
它适用于除 X 系列以外的所有手机。在所有 X 手机上,我的视图都没有收到任何触摸事件 - 它们正在点击它下方的视图,好像 inputAccessoryView 不存在一样。
如果我将底部限制为 superview 而不是 safeArea,它可以工作,但是它太靠近 home 指示器,这是我不想要的:
在这个radar(“inputAccessoryViews 应该尊重 iPhone X 上的外部键盘插入的安全区域”)中,Apple 工程师说这不是一个错误,开发人员应该将其中一个视图限制为其父级的 safeAreaLayoutGuide:
Engineering 针对此问题提供了以下反馈:您有责任尊重输入附件视图的 safeAreaInsets。我们以这种方式设计它,以便开发人员可以提供背景视图(即,参见 Safari 的 Find on Page 输入附件视图)并根据 safeAreaInsets 布置内容视图。这很容易实现。有一个视图层次结构,其中有一个容器视图和一个内容视图。容器视图可以具有背景颜色或包含其整个边界的背景视图,并且它基于 safeAreaInsets 布置其内容视图。如果您使用的是自动布局,这很简单,只需将内容视图的 bottomAnchor 设置为与其父视图的 safeAreaLayoutGuide 相等即可。
我相信这正是我正在做的,但我显然错过了一些东西,因为它在 X 上中断了。
【问题讨论】:
标签: ios autolayout iphone-x safearealayoutguide inputaccessoryview