Панель над клавиатурой UIKit

June 1, 2020

Очень простое и понятное расширение для UITextField и UITextView, с которым можно легко добавить панель над клавиатурой:

import UIKit

extension UITextField {

    /// Adds a toolbar on top of the keyboard with a button to hide the keyboard for the UITextView

    func addDoneButton(_ buttons: [UIBarButtonItem]) {

        let toolBar = UIToolbar()

        toolBar.sizeToFit()

        let flexibleSpace = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)

        var toolBarButtons = [flexibleSpace]

        toolBarButtons.append(contentsOf: buttons)

        toolBar.items = toolBarButtons

        self.inputAccessoryView = toolBar

    }

}

flexibleSpace в данном случае занимает все свободное место, и так как он первый в массиве - стоит он слева, и нужные нам кнопки располагаются справа.

Использовать его так же просто. Сначала создаём кнопку UIBarButtonItem(), например, Done для того, чтобы спрятать клавиатуру:

let barButton = UIBarButtonItem(barButtonSystemItem: .done, target: textField, action: #selector(resignFirstResponder))

textField.addDoneButton([barButton])

При желании можно добавить массив из сразу нескольких кнопок. Результат вполне предсказуемый: