IQKeyboardManager - 将 UITextView 移动得太远

Posted

技术标签:

【中文标题】IQKeyboardManager - 将 UITextView 移动得太远【英文标题】:IQKeyboardManager - Shifting UITextView up too far 【发布时间】:2017-04-02 18:11:03 【问题描述】:

我正在使用IQKeyboardManager 来简化我拥有的笔记视图控制器的键盘管理(包含一个大的UITextView)。但是,一旦键盘处于活动状态,屏幕就会不必要地向上移动。我希望屏幕在键盘处于活动状态之前保持原样(见下图),并且只有在用户的输入被键盘覆盖时才让 UITextView 滚动。

Before keyboard is active

When the keyboard is active (view scrolled up, covering "Notes" and Navigation Bar)

我不希望导航栏或“备注”标签被遮盖,但我在 IQKeyboardManager 中找不到阻止 UITextView 一直被推到顶部的设置。

当键盘处于活动状态时,如何防止视图向上移动?

编辑:我应该注意我并不反对删除IQKeyboardManager,我只是认为它也可以解决这个问题。我主要只是需要一种方法让我的UITextView 在用户键入键盘下方的内容时自动滚动。

更新:我解决了没有IQKeyboardManager 的问题,方法是根据键盘是否可见调整我的UITextView 的 contentInset。

【问题讨论】:

感谢您提供我的 UITextView 的 contentInset 的线索,它也解决了我的问题。 【参考方案1】:

你的导航栏是半透明的吗?这是 IQKeyboardManager 中的常见错误。尝试取消选中导航栏中的“半透明”属性。这不是完美的解决方案,但应该可以。

【讨论】:

【参考方案2】:

如果您希望屏幕保持原样,您可以使用 IQKeyboardManager.sharedManager().disabledDistanceHandlingClasses 属性为您的班级禁用移动行为,例如:

/* Probably in your AppDelegate where you setup the keyboard */

IQKeyboardManager.sharedManager().enable = true
IQKeyboardManager.sharedManager().disabledDistanceHandlingClasses = [YourViewController.self]

【讨论】:

这可以保持屏幕的状态(谢谢!),但是一旦用户的文本低于键盘,它也会阻止 UITextView 自动滚动。对维护该功能有何建议? @MichaelPangburn 你能分享你的项目吗?

以上是关于IQKeyboardManager - 将 UITextView 移动得太远的主要内容,如果未能解决你的问题,请参考以下文章

iOS:如何使用 IQKeyboardManager 更改要聚焦的 UITextField 的顺序

IQKeyboardManager 与 CustomTextField (SkyFloatingLabelTextField) 使用 Swift 3

升级的 Xcode - IQKeyboardManager Cocoapod 不工作

IQKeyBoardManager-键盘toolBar出现在屏幕最顶部

集成 IQKeyboardManager 时找不到 .h 文件

如何让 iqkeyboardmanager 包含 UISearchBar