IQKeyboardManager 未禁用

Posted

技术标签:

【中文标题】IQKeyboardManager 未禁用【英文标题】:IQKeyboardManager not disabling 【发布时间】:2015-06-23 12:47:54 【问题描述】:

尝试为特定 ViewController 或整个应用禁用 IQKeyboardManager,但它不起作用。

我的 AppDelegate 代码:

[[IQKeyboardManager sharedManager] setEnableAutoToolbar:NO];
[[IQKeyboardManager sharedManager] setEnable:NO];
[[IQKeyboardManager sharedManager] disableToolbarInViewControllerClass:[TCChatViewController class]];
[[IQKeyboardManager sharedManager] disableInViewControllerClass:[TCChatViewController class]];

还试图在viewWillAppear: 中禁用:

[[IQKeyboardManager sharedManager] setEnableAutoToolbar:NO];
[[IQKeyboardManager sharedManager] setEnable:NO];

【问题讨论】:

您能否告诉我们您真正需要什么以及现在正在发生什么? 我正在通过应用程序使用 IQKeyboardManager,但我需要为特定的 VC 禁用它,我可以更改它的设置。看起来设置正在改变,但经理没有使用它们。 我可以看到你做得对,但不知道你为什么会遇到问题。请在 repo 问题跟踪器上提出问题并上传示例代码。 好的,谢谢。 【参考方案1】:

在 Objective C 中禁用 IQKeyboard 管理器

如果您想在特定控制器中禁用 IQKeyboardManager 你的项目。然后在你的 viewController 类中添加这一行。

 #import "IQKeyboardManager.h"

现在在 View Controller 的 viewDidLoad 方法中,添加如下函数

[[IQKeyboardManager sharedManager] setEnableAutoToolbar:false];

现在,当您离开控制器时,您的 IQKeyboardManager 将在您离开该 viewController** 时启用。

In **viewWillDisappear** Method:-

[[IQKeyboardManager sharedManager] setEnableAutoToolbar:true];

在 Swift 3.0 中禁用 IQKeyboard 管理器

import IQKeyboardManagerSwift

 override func viewDidLoad() 
    super.viewDidLoad()
    IQKeyboardManager.sharedManager().enableAutoToolbar = false
    IQKeyboardManager.sharedManager().enable = false


 //MARK:- viewWillDisappear
 override func viewWillDisappear(_ animated: Bool) 
    IQKeyboardManager.sharedManager().enableAutoToolbar = true
    IQKeyboardManager.sharedManager().enable = true

在 Swift 4.2 中禁用 IQKeyboard 管理器

import IQKeyboardManagerSwift

 override func viewDidLoad() 
    super.viewDidLoad()
    IQKeyboardManager.shared.enableAutoToolbar = false
    IQKeyboardManager.shared.enable = false


 //MARK:- viewWillDisappear
 override func viewWillDisappear(_ animated: Bool) 
    IQKeyboardManager.shared.enableAutoToolbar = true
    IQKeyboardManager.shared.enable = true

【讨论】:

错了。 setEnableAutoToolbar 启用/禁用IQKeyboardManager 的自动工具栏,而不是整个IQKeyboardManager @mrvincenzo 我只是提到它将从该类中禁用 IQKeyboardManager 的自动工具栏,我曾提到它将删除整个 IQKeyboardManager。告诉我,我会检查并提到如果你想禁用 IQKeyboardManager,特别是你的项目控制器。先明白答案,然后说别人你错了。【参考方案2】:

试试这个

只需将下面的行放在您的 ViewController viewDidLoad 中。

[[IQKeyboardManager sharedManager] setEnable:false];

在您的 ViewController viewWillDisappear 中放入下面的行;

[[IQKeyboardManager sharedManager] setEnable:true];

【讨论】:

【参考方案3】:

问题出在“在两者中实现的类”中,因为库已包含在主应用程序和框架中。所以我想我正在将图书馆偏好设置为一个副本,但图书馆正在阅读另一个副本的偏好,而我的被忽略了。

【讨论】:

我不明白请详细说明 @jaskiratjd IQKeyboardManager pod 与主应用程序和我的框架相关联,因此我猜库首选项被覆盖了。希望这对您有所帮助。【参考方案4】:

试试这个

[[IQKeyboardManager sharedManager] setEnable:NO];
[[IQKeyboardManager sharedManager] setEnableAutoToolbar:NO];
[[IQKeyboardManager sharedManager] setShouldResignOnTouchOutside:NO];

【讨论】:

【参考方案5】:

在 Swift 5 中,这对我尤其适用于 vc:

IQKeyboardManager.shared.disabledDistanceHandlingClasses.append(MyController.self)
IQKeyboardManager.shared.disabledToolbarClasses = [MyController.self]

【讨论】:

以上是关于IQKeyboardManager 未禁用的主要内容,如果未能解决你的问题,请参考以下文章

集成 IQKeyboardManager 时找不到 .h 文件

如何让 iqkeyboardmanager 包含 UISearchBar

iOS 键盘框架IQKeyboardManager使用

完成按钮在 IQkeyboardManager 库中不可见

IQKeyboardManager - 将 UITextView 移动得太远

如何处理工具栏中的 IQKeyboardManager 完成按钮操作?