2017-11-21 10 views
0

を働く私はNSTextView通知センターの観察者が文句を言わない右

NotificationCenter.default.addObserver(self, selector: #selector(testest), name: NSTextView.didEndEditingNotification, object: nil) 

を確認して通知センターオブザーバを使用している、それは動作しますが、事は、私は2 nstextviewを持って、それが自動に1にピックアップし、あります

私はobejctでその名前を指定していますか?何故ですか?この

NotificationCenter.default.addObserver(self, selector: #selector(testest), name: NSTextView.didEndEditingNotification, object: BoxText) 

よう

更新:それ私は1つを指定する方法私のNSTextViewsの両方に拾っacutlay?

+0

質問が不明です。オブジェクトを指定しないと、1つのテキストビューから通知を受け取りますか?どれ?オブジェクトを指定すると、両方のテキストビューから通知を受け取りますか?デリゲートメソッド 'textDidEndEditing(_ :)'があることを知っていますか? – Willeke

+0

あなたは2つのテキストビューを同じセレクタに接続したいと思いますが、どのセレクタを呼び出すのかを知る方法が必要ですか? –

+0

こんにちは、私は同じことをしたいのですが、テキストフィールドの代わりにテキストビューを使っています –

答えて

0

nilを渡すと、View ControllerのすべてのNSTextViewが通知を受け取ります。それぞれのNSTextViewにIBOutletを作成し、通知オブジェクトをNSTextViewにキャストし、NSTextViewのそれぞれと等しいかどうかを確認します。特定のテキストビューに対してのみ選択機能を有効にするには、オブジェクトパラメータとして渡す必要があります。

import Cocoa 

class ViewController: NSViewController { 

    @IBOutlet var textViewLeft: NSTextView! 
    @IBOutlet var textViewRight: NSTextView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // If you pass nil all NSTextView in your view controller will receive the notification 
     NotificationCenter.default.addObserver(self, selector: #selector(didEndEditing), name: NSTextView.didEndEditingNotification, object: nil) 
     // If you would like to have a selector to fire just for a certain text view you need to pass it as the object parameter 
     NotificationCenter.default.addObserver(self, selector: #selector(didEndEditingTextViewLeft), name: NSTextView.didEndEditingNotification, object: textViewLeft) 
     NotificationCenter.default.addObserver(self, selector: #selector(didEndEditingTextViewRight), name: NSTextView.didEndEditingNotification, object: textViewRight) 

    } 

    @objc func didEndEditing(_ obj: Notification) { 
     if (obj.object as? NSTextView) == textViewLeft { 
      print(#function, "textViewLeft") 
     } else if (obj.object as? NSTextView) == textViewRight { 
      print(#function,"textViewRight") 
     } 
    } 

    @objc func didEndEditingTextViewLeft(_ obj: Notification) { 
     print(#function) 
    } 

    @objc func didEndEditingTextViewRight(_ obj: Notification) { 
     print(#function) 
    } 
} 
+0

は動作しますが、textviewでテキストが変更されたときに関数にdidChangeTypingAttributesNotificationを使用する必要がありました.thx u –

+0

@Sarahlinoneあなたは歓迎です –

関連する問題