2017-01-08 22 views
2

ユーザー入力が変更された別のビューのテキストをNSTextFieldで動的に更新しようとしました。次の方法は、iOSのため動作しません。 osxNSTextFieldの類似したものはありますか?Swift:NSTextFieldが編集されたときの呼び出し関数

self.equationTextField.addTarget(self, action: #selector(ViewController.textFieldDidChange(_:)), for: UIControlEvents.editingChanged) 
//build error: "Use of unresolved identifier 'UIControlEvents'" 

ありがとうございます!

答えて

5

NSControlTextEditingDelegateを使用する必要があります。ストーリーボードを使用している場合は、NSTextField delegateをViewControllerに接続します。あなたがプログラムを作成する場合は、単にこのようなコードでそれを設定することができます。NSControlTextEditingDelegateviewDidLoad()

textfield.delegate = selfテキストが編集されたときに通知を得るために利用することができcontrolTextDidChangeがあります。

extension ViewController: NSControlTextEditingDelegate { 
    override func controlTextDidChange(_ notification: Notification) { 
     if let textField = notification.object as? NSTextField { 
      print(textField.stringValue) 
      //do what you need here 
     } 
    } 
} 
+0

ありがとうございました。私はすでに素早いリファレンスでsnatchされた 'func controlTextDidChange(_ notification:Notification)'を見つけましたが、私はクラス 'extension'を使って完全な解決策を見つけることはできませんでした。複雑なものの種類。とにかくありがとう。 – JFS

+0

controlTextDidChangeは、入力中にライブアップデートを提供します。 controlTextDidEndEditingは、リターンを押すか、別のコントロールに移動したときにのみ発生します。 –

関連する問題