Проблемка в Xcode/swift

swift
xcode
swift3

#1

Делаю тут приложение по книжке Learning Xcode 8 (http://smtebooks.com/book/5693/learning-xcode-8-pdf)

И вот в один момент
Когда по идее должны появляться клавиатура и вместе с ней Toolbar с кнопкой Done
У меня перестаёт работать код

На этой строчке:

let doneButton = UIBarButtonItem (barButtonSystemItem: .done, target: self, action: #selector(doneButtonPressed))

Подчёркивает doneButtonPressed и говорит: “Use of unresolved identifier “doneButtonPressed””

Книжка эта издана в ноябре 2016, я уже раньше находил некоторые устаревшие вещи в ней, но мог исправить
А вот что происходит с этой не понимаю

Код, ответственный за VC, в котором всё это происходит

class TextSnippetEntryViewController: UIViewController {

@IBOutlet weak var textView: UITextView!

override func viewDidLoad() {
    super.viewDidLoad()
    textView.becomeFirstResponder()
}

func createKeyboardToolbar() -> UIView {
    let keyboardToolbar = UIToolbar (frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 44))
    
    let flexSpace = UIBarButtonItem (barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
    let doneButton = UIBarButtonItem (barButtonSystemItem: .done, target: self, action: #selector(doneButtonPressed))
    keyboardToolbar.setItems([flexSpace, doneButton], animated: false)
    
    return keyboardToolbar
}

#2

Нужно создать функцию doneButtonPressed, которая будет вызываться при нажатие кнопки.


#3

А что там нужно выбирать, чтобы была кнопка Done?


#4

Если вы хотите завершить редактирование по нажатию кнопки, то можно так.

func doneButtonPressed() {
   self.view.endEditing(true)
}

Или можно короче:
let doneButton = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: Selector("endEditing:"))