Как добавить Doneaction и изменить готовый текст? - PullRequest
1 голос
/ 20 июня 2019

Я использую IQKeyboardManager и добавил пользовательское действие для кнопки «Готово»

txtfield.addDoneOnKeyboard(withTarget: self, action: #selector(doneButtonClicked), titleText: "Next")

IQKeyboardManager.shared().toolbarDoneBarButtonItemText = "Next"

@objc func doneButtonClicked(_ sender: Any) {
    //  do stuff
}

Здесь вызывается действие, и все работает. Но название готовой кнопки ЗАВЕРШЕНО (в синем цвете).

«Далее» отображается в середине клавиатуры в виде заголовка. Как изменить текст / цвет готовой кнопки? Если я не добавляю никаких действий в какое-либо конкретное текстовое поле, вторая строка работает отлично, но каждый раз, когда я добавляю действие, пользовательское имя для кнопки «Готово» игнорируется.

Любая помощь?

IQKeyboardManager в github

Ответы [ 2 ]

2 голосов
/ 20 июня 2019

Используйте следующее:

 let config = IQBarButtonItemConfiguration(title: "Next", action: #selector(doneButtonClicked))
txtfield.addKeyboardToolbar(withTarget: self, titleText: nil , rightBarButtonConfiguration: config, previousBarButtonConfiguration: nil, nextBarButtonConfiguration: nil)

//  any color you like
txtfield.keyboardToolbar.doneBarButton.setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.red], for: UIControl.State.normal)

Вместо:

txtfield.addDoneOnKeyboard(withTarget: self, action: #selector(doneButtonClicked), titleText: "Next")

что больше? titleText комплектов toolbar.titleBarButton.title.

Я выбираю фрагмент кода из IQKeyboardManager исходного кода здесь:

      //Title button
     toolbar.titleBarButton.title = titleText

в то время как toolbarDoneBarButtonItemText набор doneBarButton.title

фрагмент кода из IQKeyboardManager здесь:

    if let rightConfig = rightBarButtonConfiguration {

        var done = toolbar.doneBarButton

        if rightConfig.barButtonSystemItem == nil && done.isSystemItem == false {
             done.title = rightConfig.title
             done.image = rightConfig.image
             done.target = target
             done.action = rightConfig.action
        }

0 голосов
/ 20 июня 2019

Попробуйте это.

  1. import IQKeyboardManagerSwift
  2. IQKeyboardManager.shared.toolbarDoneBarButtonItemText = "NEXT"

См. Ниже изображение имеет кнопку NEXT вXcode 10.1.

enter image description here

...