4

Trying to disable IQKeyboardManager for a particular ViewController or for the whole app, it's not working.

My AppDelegate code:

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

Also trying to disable in viewWillAppear: :

[[IQKeyboardManager sharedManager] setEnableAutoToolbar:NO];
[[IQKeyboardManager sharedManager] setEnable:NO];
Tamás Sengel
  • 55,884
  • 29
  • 169
  • 223
Dima Cheverda
  • 402
  • 1
  • 4
  • 10

5 Answers5

9

Disable IQKeyboard Manager In Objective C

If you want to disable IQKeyboardManager in particular controller of your project. Then add this line in your viewController Class.

 #import "IQKeyboardManager.h"

Now In View Controller viewDidLoad Methods, add the below function

[[IQKeyboardManager sharedManager] setEnableAutoToolbar:false];

Now when you leave the controller, so that your IQKeyboardManager will enable when you leave that viewController**.

In **viewWillDisappear** Method:-

[[IQKeyboardManager sharedManager] setEnableAutoToolbar:true];

Disable IQKeyboard Manager In Swift 3.0

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
}

Disable IQKeyboard Manager In Swift 4.2

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
}
Mandeep Singh
  • 2,810
  • 1
  • 19
  • 31
  • That's wrong. `setEnableAutoToolbar` enables/disables the `IQKeyboardManager`'s auto toolbar, not the `IQKeyboardManager` as a whole. – tonymontana Oct 20 '17 at 06:23
  • 1
    @mrvincenzo i just mention that it will disable IQKeyboardManager's auto toolbar from that class where did i mention that it will remove the whole IQKeyboardManager. Tell me i will check and i mention that If you want to disable IQKeyboardManager in particular controller of your project. First understand the answer then say someone you are wrong. – Mandeep Singh Oct 23 '17 at 11:44
4

Try This

Just Put below line in Your ViewController viewDidLoad.

[[IQKeyboardManager sharedManager] setEnable:false];

Put Below line in Your ViewController viewWillDisappear;

[[IQKeyboardManager sharedManager] setEnable:true];
Kuldeep
  • 4,466
  • 8
  • 32
  • 59
1

The issue was in 'Class implemented in both', because library was included to main app and framework. So I guess I was setting library preferences to one copy, but library was reading preferences from another copy and mine was ignored.

Dima Cheverda
  • 402
  • 1
  • 4
  • 10
1

Try this

[[IQKeyboardManager sharedManager] setEnable:NO];
[[IQKeyboardManager sharedManager] setEnableAutoToolbar:NO];
[[IQKeyboardManager sharedManager] setShouldResignOnTouchOutside:NO];
Jirui
  • 139
  • 1
  • 6
0

In Swift 5 this is what worked for me in particular vc:

IQKeyboardManager.shared.disabledDistanceHandlingClasses.append(MyController.self)
IQKeyboardManager.shared.disabledToolbarClasses = [MyController.self]
Lance Samaria
  • 17,576
  • 18
  • 108
  • 256