【问题标题】:How to hide Toolbar in IQKeyboardManager iOS Swift 3如何在 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.    

    }

【问题讨论】:

  • @BhavinRamani 我在哪里可以启用这个值?
  • AppDelegate didFinishLaunchingWithOptions 方法中。
  • 你的代码 sn-p 是 Objective-c 和 Swift 的集合吗? O.o
  • @AhmadF 太棒了!那个有效。我的是 Swift 3

标签: ios swift uitextfield ios-keyboard-extension iqkeyboardmanager


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

【讨论】:

  • 你能帮我解决这个问题吗:stackoverflow.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
            

            【讨论】:

              猜你喜欢
              • 2016-04-14
              • 2020-07-08
              • 2022-01-10
              • 2022-11-12
              • 2012-07-12
              • 1970-01-01
              • 2016-01-29
              • 1970-01-01
              相关资源
              最近更新 更多