问题
I'm using the IQKeyboardManger library to scroll text fields when started typing using the keyboard, but I don't want to display the default toolbar from their library. Below is the code I've used.
override func viewDidLoad() {
super.viewDidLoad()
self.chatTextField.inputAccessoryView = [[UIView alloc] init]; //This will remove toolbar which have done button.
self.chatTextField.keyboardDistanceFromTextField = 8; //This will modify default distance between textField and keyboard. For exact value, please manually check how far your textField from the bottom of the page. Mine was 8pt.
}
回答1:
You can set IQKeyboardManager below properties.
I assume you have enabled the IQKeyboardManager in didFinishLaunch of app delegate like this
IQKeyboardManager.sharedManager().enable = true
shouldShowTextFieldPlaceholder to false
==> If you want to hide placeholder toolbar section
shouldHidePreviousNext to false
==> If you want to hide next and prev button and so on.
You can enable the settings in didFinishLaunch of AppDelegate like this
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
IQKeyboardManager.sharedManager().enable = true
IQKeyboardManager.sharedManager().enableAutoToolbar = false
IQKeyboardManager.sharedManager().shouldShowTextFieldPlaceholder = false
IQKeyboardManager.sharedManager().shouldHidePreviousNext = false
return true
}
回答2:
You can enable or disable the toolbar in didFinishLaunchingWithOptions
of AppDelegate
:
IQKeyboardManager.sharedManager().enable = true
IQKeyboardManager.sharedManager.enableAutoToolbar = false
For more info see Properties and functions usage
回答3:
Swift 3
You must use shouldResignOnTouchOutside
to resign textField if touched outside of UITextField
/UITextView
.
Add this in your ViewController
if you want it in an specific ViewController
or to override all your application in the file AppDelegate
.
Inside the method:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
IQKeyboardManager.sharedManager().enable = true
IQKeyboardManager.sharedManager().enableAutoToolbar = false
IQKeyboardManager.sharedManager().shouldShowToolbarPlaceholder = false
IQKeyboardManager.sharedManager().shouldResignOnTouchOutside = true
}
回答4:
Swift 4.0 and above For hide previous Next
IQKeyboardManager.shared.previousNextDisplayMode = .alwaysHide
Swift 4.0 and above For toolbar
IQKeyboardManager.shared.enableAutoToolbar = false
回答5:
If you want to hide for a specific controller, you can do like this :
import IQKeyboardManagerSwift
in your the desired View Controller.Add this extension :
// MARK: - Helper extension <#yourViewController#> { private func keyboardManagerVisible(_ state: Bool) { IQKeyboardManager.shared.enableAutoToolbar = state } }
Implement this in the life cycle :
override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) self.keyboardManagerVisible(false) } override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) self.keyboardManagerVisible(true) }
回答6:
Enable IQKeyboardManager in Swift 4
Maybe try this:
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
//Your other code here
// -- enable IQKeyboardManager --
IQKeyboardManager.shared.enable = false
return true
}
回答7:
Swift 5, IQKeyboardManager (6.3.0)
You can call this setup function from your didFinishLaunchingWithOptions
in the app delegate:
private func setupKeyboardManager() {
IQKeyboardManager.shared().isEnabled = true
IQKeyboardManager.shared().isEnableAutoToolbar = false
IQKeyboardManager.shared().shouldShowToolbarPlaceholder = false
IQKeyboardManager.shared().previousNextDisplayMode = .alwaysHide
}
Feel free to add any other customisation you need in this method, such as shouldResignOnTouchOutside
or similar.
回答8:
Swift4.2
//Add these line into didFinishLaunch
IQKeyboardManager.shared.enable = true
IQKeyboardManager.shared.shouldResignOnTouchOutside = true
IQKeyboardManager.shared.enableAutoToolbar = false
回答9:
Swift 5.1, Xcode 11
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
IQKeyboardManager.shared.enable = true
IQKeyboardManager.shared.enableAutoToolbar = false
IQKeyboardManager.shared.shouldShowToolbarPlaceholder = false
IQKeyboardManager.shared.shouldResignOnTouchOutside = true
return true
}
来源:https://stackoverflow.com/questions/40124364/how-to-hide-toolbar-in-iqkeyboardmanager-ios-swift-3