如何在 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

shouldShowTextFieldPlaceholderfalse ==> 如果你想隐藏占位符工具栏部分

shouldHidePreviousNextfalse ==> 如果你想隐藏下一个和上一个按钮等等。

您可以像这样在AppDelegatedidFinishLaunch中启用设置

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】:

您可以在didFinishLaunchingWithOptionsAppDelegate 中启用或禁用工具栏:

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 完成按钮操作?

iOS 键盘自适应(IQKeyboardManager)使用小结

iOS开发解决IQKeyboardManager失效的问题

iOS 键盘框架IQKeyboardManager使用

iOS 键盘框架IQKeyboardManager使用

IQKeyboardManager 横屏后 Toolbar 显示异常