【问题标题】:IQKeyboardManager not disablingIQKeyboardManager 未禁用
【发布时间】: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 问题跟踪器上提出问题并上传示例代码。
  • 好的,谢谢。

标签: ios ios8 uikeyboard iqkeyboardmanager


【解决方案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]
      

      【讨论】:

        猜你喜欢
        • 2023-03-09
        • 1970-01-01
        • 1970-01-01
        • 2018-06-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-29
        • 2018-03-22
        相关资源
        最近更新 更多