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】:问题出在“在两者中实现的类”中,因为库已包含在主应用程序和框架中。所以我想我正在将图书馆偏好设置为一个副本,但图书馆正在阅读另一个副本的偏好,而我的被忽略了。
【讨论】:
我不明白请详细说明 @jaskiratjdIQKeyboardManager
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