9

开始使用键盘输入时,我正在使用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.    

    }

在此处输入图像描述

4

10 回答 10

38

您可以在属性下方设置 IQKeyboardManager。

我假设您已经像这样在应用程序委托的 didFinishLaunch 中启用了 IQKeyboardManager

    IQKeyboardManager.sharedManager().enable = true

shouldShowTextFieldPlaceholder to false==> 如果要隐藏占位符工具栏部分

shouldHidePreviousNext to 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
}
于 2016-10-19T07:32:31.770 回答
11

您可以启用或禁用工具栏didFinishLaunchingWithOptionsAppDelegate

IQKeyboardManager.shared.enable = true

IQKeyboardManager.shared.enableAutoToolbar = false

有关详细信息,请参阅属性和函数用法

于 2016-10-19T07:34:23.957 回答
6

Swift 3如果在/之外触摸, 您必须使用shouldResignOnTouchOutside来辞职 textField 。UITextFieldUITextView

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
}
于 2017-10-25T21:03:39.367 回答
5

这是为单个视图控制器执行此操作的方法:

class YourViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        IQKeyboardManager.shared.disabledToolbarClasses = [YourViewController.self]
    }
}

并且为了防止在键盘存在时 IQKeyboardManager 提升 vc 时上升:

IQKeyboardManager.shared.disabledDistanceHandlingClasses.append(YourViewController.self)
于 2020-04-24T18:13:35.150 回答
4

Swift 4.0 及以上 隐藏上一个 下一个

IQKeyboardManager.shared.previousNextDisplayMode = .alwaysHide

Swift 4.0 及以上 工具栏

IQKeyboardManager.shared.enableAutoToolbar = false
于 2019-01-08T13:06:51.937 回答
2

如果要隐藏特定控制器,可以这样做:

  • 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)
    }
    
于 2018-10-24T09:02:03.513 回答
1

斯威夫特 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
}
于 2018-12-13T14:36:33.907 回答
0

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或类似的。

于 2019-05-15T09:41:04.143 回答
0

斯威夫特4.2

 //Add these line into didFinishLaunch
IQKeyboardManager.shared.enable = true
IQKeyboardManager.shared.shouldResignOnTouchOutside = true        
IQKeyboardManager.shared.enableAutoToolbar = false
于 2019-09-26T14:50:56.890 回答
0

在 Swift 4 中启用 IQKeyboardManager

也许试试这个:

func application(_ application: UIApplication, 
     didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

    //Your other code here       

    // -- enable IQKeyboardManager --
    IQKeyboardManager.shared.enable = false
    
    return true
}
于 2018-11-25T14:53:44.103 回答