如何在 IQKeyboardManager iOS Swift 3 中隐藏工具栏
Posted
技术标签:
【中文标题】如何在 IQKeyboardManager iOS Swift 3 中隐藏工具栏【英文标题】:How to hide Toolbar in IQKeyboardManager iOS Swift 3 【发布时间】:2016-10-19 07:02:10 【问题描述】:当我开始使用键盘输入时,我正在使用IQKeyboardManger 库来滚动文本字段,但我不想显示他们库中的默认工具栏。下面是我使用的代码。
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.
【问题讨论】:
IQToolbar handling @BhavinRamani 我在哪里可以启用这个值? 在AppDelegate
didFinishLaunchingWithOptions
方法中。
你的代码 sn-p 是 Objective-c 和 Swift 的集合吗? O.o
@AhmadF 太棒了!那个有效。我的是 Swift 3
【参考方案1】:
您可以在属性下方设置 IQKeyboardManager。
我假设您已经像这样在应用委托的 didFinishLaunch 中启用了 IQKeyboardManager
IQKeyboardManager.sharedManager().enable = true
shouldShowTextFieldPlaceholder 到false
==> 如果你想隐藏占位符工具栏部分
shouldHidePreviousNext 到false
==> 如果你想隐藏下一个和上一个按钮等等。
您可以像这样在AppDelegate的didFinishLaunch中启用设置
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
【讨论】:
你能帮我解决这个问题吗:***.com/questions/40124131/… 我想隐藏上一个/下一个按钮,但是 [[IQKeyboardManager sharedManager] shouldHidePreviousNext] = YES;给我一个错误 shouldHidePreviousNext 不可用...感谢任何帮助... shouldHidePreviousNext 已弃用,在此使用 previousNextDisplayMode 隐藏下一个以前的键使用:- IQKeyboardManager.sharedManager().previousNextDisplayMode = IQPreviousNextDisplayMode.alwaysHide 我可以隐藏特定文本字段的工具栏吗?【参考方案2】:您可以在didFinishLaunchingWithOptions
的AppDelegate
中启用或禁用工具栏:
IQKeyboardManager.shared.enable = true
IQKeyboardManager.shared.enableAutoToolbar = false
欲了解更多信息,请参阅Properties and functions usage
【讨论】:
我可以隐藏特定文本字段的工具栏吗?【参考方案3】:斯威夫特 3
如果在 UITextField
/UITextView
之外触摸,您必须使用 shouldResignOnTouchOutside
退出 textField。
如果您希望将其添加到特定的 ViewController
中,请将其添加到您的 ViewController
中,或者覆盖文件 AppDelegate
中的所有应用程序。
方法内部:
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】:这是为单个视图控制器执行此操作的方法:
class YourViewController: UIViewController
override func viewDidLoad()
super.viewDidLoad()
IQKeyboardManager.shared.disabledToolbarClasses = [YourViewController.self]
当 IQKeyboardManager 在键盘存在时将其提升到prevent the vc from rising:
IQKeyboardManager.shared.disabledDistanceHandlingClasses.append(YourViewController.self)
【讨论】:
【参考方案5】:Swift 4.0 及以上 用于隐藏上一个 下一个
IQKeyboardManager.shared.previousNextDisplayMode = .alwaysHide
Swift 4.0 及以上 用于工具栏
IQKeyboardManager.shared.enableAutoToolbar = false
【讨论】:
【参考方案6】:如果你想隐藏特定的控制器,你可以这样做:
import IQKeyboardManagerSwift
在您想要的视图控制器中。
添加这个扩展:
// MARK: - Helper
extension <#yourViewController#>
private func keyboardManagerVisible(_ state: Bool)
IQKeyboardManager.shared.enableAutoToolbar = state
在生命周期中实现这一点:
override func viewDidAppear(_ animated: Bool)
super.viewDidAppear(animated)
self.keyboardManagerVisible(false)
override func viewWillDisappear(_ animated: Bool)
super.viewWillDisappear(animated)
self.keyboardManagerVisible(true)
【讨论】:
这可行,但如果推送和弹出一个 vc,你应该使用viewWillAppear
隐藏键盘而不是 viewDidAppear
【参考方案7】:
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
【讨论】:
【参考方案8】:在 Swift 4 中启用 IQKeyboardManager
不妨试试这个:
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool
//Your other code here
// -- enable IQKeyboardManager --
IQKeyboardManager.shared.enable = false
return true
【讨论】:
【参考方案9】:Swift 5,IQKeyboardManager (6.3.0)
您可以在应用委托中从didFinishLaunchingWithOptions
调用此设置函数:
private func setupKeyboardManager()
IQKeyboardManager.shared().isEnabled = true
IQKeyboardManager.shared().isEnableAutoToolbar = false
IQKeyboardManager.shared().shouldShowToolbarPlaceholder = false
IQKeyboardManager.shared().previousNextDisplayMode = .alwaysHide
您可以随意在此方法中添加您需要的任何其他自定义项,例如 shouldResignOnTouchOutside
或类似名称。
【讨论】:
【参考方案10】:Swift4.2
//Add these line into didFinishLaunch
IQKeyboardManager.shared.enable = true
IQKeyboardManager.shared.shouldResignOnTouchOutside = true
IQKeyboardManager.shared.enableAutoToolbar = false
【讨论】:
以上是关于如何在 IQKeyboardManager iOS Swift 3 中隐藏工具栏的主要内容,如果未能解决你的问题,请参考以下文章
如何处理工具栏中的 IQKeyboardManager 完成按钮操作?