2016-03-31 2 views
0

Я хочу, чтобы функция срабатывала каждый раз, когда пользователь вносит изменения в мой NSTextView. Я получил это, чтобы работать в приложении iOS, и теперь я пытаюсь заставить его работать в приложении OS X. Я создал выход для моего NSTextView и написал следующий код: SwiftСлушайте изменения в NSTextView с NSTextViewDelegate & textViewDidChange не работает

import Cocoa 

class ViewController: NSViewController, NSTextViewDelegate { 

    @IBOutlet var textViewOutlet: NSTextView! 

    func textViewDidChange(textView: NSTextView) { 
     print("Text view changed!") 
    } 
} 

Я не получаю никаких ошибок, но не печатает мое заявление.

+0

'textViewDidChange' не является методом' NSTextViewDelegate' или 'NSTextDelegate'. Попробуйте 'textDidChange'. – Willeke

+0

@Willeke Когда я пытаюсь textDidChange, я получаю сообщение об ошибке «Objective-C method» textDidChange: «предоставлено методом« textDidChange »конфликтует с необязательным методом требований« textDidChange »в протоколе« NSTextDelegate »« – user1822824

+0

Вы изменили параметр? – Willeke

ответ

3

Должно быть textDidChange (уведомление :). Попробуйте вот так:

func textDidChange(notification: NSNotification) { 
    guard let textView = notification.object as? NSTextView else { return } 
    print(textView.string) 
} 
1

Должно быть, поэтому нет назначения делегата.

TextViewOutlet.delegate = self; 

И метод на самом деле выглядит следующим образом. Обратите внимание на параметры

func textDidChange(_ notification: Notification) { 

}