2017-12-25 15 views
0

テキストフィールドのテキストが何らかの方法で編集されたときに関数を呼び出す必要があります。テキストフィールドの呼び出し関数の変更

私は迅速かつコードウォールに新しいが本当に私を理解するのに役立つと私は答えを探して見つけることができたthatsすべて。

テキストフィールドをCtrlキーを押しながらクリックして、「編集が開始されました」という名前で送信されたアクションを表示していましたが、「アクション」というアクションが送信されました。私は明確化が必要です。

EDIT:これはMacOSアプリケーション用ですが、UIKitは機能しません。

import Cocoa 

@NSApplicationMain 
class AppDelegate: NSObject, NSApplicationDelegate, NSTextFieldDelegate { 

    @IBOutlet weak var window: NSWindow! 
    @IBOutlet weak var msgBox: NSTextField! 
    @IBOutlet weak var keyBox: NSTextField! 
    @IBOutlet weak var encBtn: NSButton! 
    @IBOutlet weak var decBtn: NSButton! 
    override func controlTextDidChange(_ obj: Notification) { 
     //makeKey() 
     keyBox.stringValue = "test" 
    } 

    override func controlTextDidBeginEditing(_ obj: Notification) { 
     print("Did begin editing...") 
    } 

    func applicationDidFinishLaunching(_ aNotification: Notification) { 
     // Insert code here to initialize your application 
    } 

    func applicationWillTerminate(_ aNotification: Notification) { 
     // Insert code here to tear down your application 
    } 

    func makeKey() { 
     keyBox.stringValue = "test" 
    } 
} 

答えて

0

macOSでは、iOS、NSTextFieldDelegateと似ています。

手順は以下のとおりです。あなたの窓の上に

1)ドラッグ&ドロップNSTextFieldインスタンス。

2)あなたのNSViewControllerにそのデリゲートを設定します。

Setting up delegate

3)あなたのViewController(またはその他の管理クラスが)NSTextFieldDelegateを実装行い、必要に応じてテキストの変更に関連するアクションのいずれかを実装します。

class ViewController: NSViewController, NSTextFieldDelegate { 

    // Occurs whenever there's any input in the field 
    override func controlTextDidChange(_ obj: Notification) { 
     let textField = obj.object as! NSTextField 
     print("Change occured. \(textField.stringValue)") 
    } 

    // Occurs whenever you input first symbol after focus is here 
    override func controlTextDidBeginEditing(_ obj: Notification) { 
     let textField = obj.object as! NSTextField 
     print("Did begin editing... \(textField.stringValue)") 
    } 

    // Occurs whenever you leave text field (focus lost) 
    override func controlTextDidEndEditing(_ obj: Notification) { 
     let textField = obj.object as! NSTextField 
     print("Ended editing... \(textField.stringValue)") 
    } 
} 
+0

このコードはどこにありますか? 1つのページにあるすべてのコードに使用されています... – Beejo

+0

これは、NSTextFieldイベントを処理するViewControllerのコードです。 – Hexfire

+0

私はコード全体を投稿しましたが、間違っていると分かりましたが(動作しないため)、おそらく助けてくれます。これは私がそれが見えるべきだと思うものです。 – Beejo

関連する問題