【发布时间】:2020-12-29 18:39:21
【问题描述】:
目前,我有一个UICollectionView,其中多行UITextField。
当底部UITextField时,键盘会遮挡其可见性。
为了使UICollectionView 仍然可以滚动到底部,引入了许多技术
- How do I scroll the UIScrollView when the keyboard appears?
- How can I make a UITextField move up when the keyboard is present - on starting to edit?
- 第三方库https://github.com/hackiftekhar/IQKeyboardManager
大多数解决方案是
- 计算键盘高度。
- 调整
UICollectionView的contentInset和scrollIndicatorInsets
但是,如果我的屏幕由UICollectionView 和底部UIView 组成,这种解决方案效果不佳。
键盘隐藏时
--------------------
| |
| |
| |
| |
| UICollectionView |
| |
| |
| |
| |
--------------------
| |
| Custom UIView |
| |
--------------------
显示键盘时(我的期望)
--------------------
| |
| |
| UICollectionView |
| |
| |
--------------------
| |
| Custom UIView |
| |
--------------------
| |
| |
| Keyboard |
| |
--------------------
但是,当前提供的解决方案只能“推高”UIScrollView/UICollectionView。
我倾向于“推高”整个主要的UIView。不幸的是,UIView 没有contentInset 可供我根据键盘高度采取行动。
这是我目前使用https://github.com/hackiftekhar/IQKeyboardManager 的结果。如果我应用https://stackoverflow.com/a/32353069/72437的解决方案,结果是一样的
键盘隐藏时
显示键盘时。只有 UICollectionView 被向上推。底部UIView 将被“覆盖”
知道如何“向上推”整个应用程序屏幕,而不仅仅是 UICollectionView/ UIScrollView?
【问题讨论】:
-
你甚至不需要处理插入,只需计算键盘高度,然后改变bottomMostView-to-superView约束的常量,整个视图就会向上推。
-
我会考虑使用solution that adjusts the safeAreaLayoutGuide,以便它适用于所有设备。
-
@Wez 感谢您的指点。我也会看看他们。事实上,我认为这应该是操作系统的责任,以确保键盘不会掩盖应用程序。它不应该要求应用程序开发人员进行所有丑陋的手动处理。 1 万亿美元的公司应该更清楚这一点。