Как использовать DidEndEditing на текстовое поле на OS X (Swift)

Здесь я хочу реализовать то, что после нажатия клавиши возврата, если текст текстового поля совпадает со словом январь, печатать правильно, если нет, печатать неправильно.

Но когда я нажал клавишу возврата, ничего не печатается.

Может кто-нибудь написать пример кода о том, как использовать DidEndEditing для меня?

@IBOutlet weak var wordTextfield: NSTextField!
let monthEN = "January"

func textFieldDidEndEditing(wordTextfield: NSTextField) {
    if wordTextfield.stringValue == monthE{
        print("right")
    }else{

        print("wrong")
    }
}

3 ответа

textFieldDelegate в OS X работает так в Swift 4:

class MainViewController: NSViewController, NSTextFieldDelegate {

      @IBOutlet weak var textFileViewLabel: NSTextField!

      override func viewDidLoad() {
        super.viewDidLoad()

        self.textField.delegate = self
     }



     override func controlTextDidChange(_ obj: Notification) {
         //Here check the changes of textField input
     }

    override func controlTextDidEndEditing(_ obj: Notification) {
        //Here check the changes of textField input

    }
}

Предположительно, вы пришли из iOS и только сейчас переходите на OS X. У меня мало опыта разработки под OS X, но похоже, что textFieldDidEndEditing(_:) не является частью NSTextFieldDelegate протокол.

NSTextFieldDelegate это просто продолжение NSControlTextEditingDelegate и не добавляет никаких методов к нему.

И с учетом этого, похоже, что нам нужно реализовать control(_:textFieldShouldEndEditing:) для аналогичного поведения на OS X или потенциально control(_:isValidObject:), Но так или иначе, важно отметить, что NSTextField никогда не позвонит textFieldDidEndEditing(_:)- это строго из iOS.

Для получения дополнительной информации, я рекомендую проверить документацию Apple дляNSControlTextEditingDelegate,

Также стоит упомянуть, что вы действительно установили текстовое поле delegate имущество.

Не забудьте указать делегату, где находятся данные (обычно на себя). т.е. wordTextfield = self (в ViewDidLoad)

Другие вопросы по тегам