【发布时间】:2018-02-27 05:00:42
【问题描述】:
我有一个消息应用程序,它具有典型的 UI 设计,即全屏表格视图底部的文本字段。我将该文本字段设置为视图控制器的 inputAccessoryView 并调用 ViewController.becomeFirstResponder() 以使该字段显示在屏幕底部。
我知道这是 Apple 推荐的完成此 UI 结构的方法,它在“经典”设备上完美运行,但是当我在 iPhone X 模拟器上测试时,我注意到使用这种方法,文本字段不尊重新的“安全区”。文本字段呈现在主屏幕指示器下方的屏幕最底部。
我查看了 HIG 文档,但没有发现关于视图控制器上的 inputAccessoryView 的任何有用信息。
这很困难,因为使用这种方法我实际上并没有直接控制任何约束,我只是设置inputAccessoryView 并让视图控制器从那里处理 UI。所以我不能只将场限制在新的安全区域。
有没有人找到这方面的好文档或知道在 iPhone X 上运行良好的替代方法?
【问题讨论】:
-
这看起来像是 API 中的一个错误。您应该提交错误报告。作为一种解决方法,您可以在 iPhone X 上运行时更改附件视图以在底部留出额外空间。
-
您的文本字段是在工具栏还是 uiview 中?我假设您将包含文本字段和相机/发送按钮的工具栏或 uiview 分配给 inputAccessoryView。如果是这样,我会按照 dasdom 的建议进行操作,并在将其分配给 iPhone X 的 inputAccessoryView 之前增加该工具栏或 uiview 的高度
-
在 viewWillAppear 中你可以输入 print(inputAccessoryView?.safeAreaInsets) 并且会看到所有的 safeAreaInsets 都是 0。不幸的是这是只读的,不能修改。
-
您是否通过代码或情节提要完成布局?我找到了一种通过代码使其工作的方法。只需将底部设置为 safeLayoutGuide.bottomAnchor。
标签: ios iphone inputaccessoryview iphone-x