2016-05-26 4 views
0

ユーザがテキストフィールドを押すと、クリックイベントを処理しようとしています。どういうわけか、関数内でジャンプしていません。ここに私のコードです:アクションメソッドが動作しないOSX

class ViewController: NSViewController { 
    override func viewDidLoad() { 

     let textField2 = NSTextField(frame: CGRectMake(30, 30, 37, 17)) 
     textField2.stringValue = "Label" 
     textField2.bordered = false 
     textField2.backgroundColor = NSColor.controlColor() 
     view.addSubview(textField2) 

     textField2.action = #selector(myAction) 
    } 

    func myAction(sender: NSView) 
    { 
     print("aktuell: \(sender)") 
     currentObject = sender 
    } 
} 

私はそれが関数内でジャンプしていません。 誰かが関数にテキストフィールドをリンクする方法を知っていますか?他のコントロール(ボタンなど)もリンクされているため、その関数でなければならないことに注意してください。

答えて

1

このようなテキストフィールドはリンクできません。あなたは何を達成しようとしていますか?おそらくNSTextFieldDelegateメソッドが代わりに必要です。そのプロトコルに関するヘルプを見てください。それらがあなたが望むものを持っている場合は、textField2.delegate = selfを設定して、プロトコルを実装してください。

+0

はい、すべてのテキストフィールドを1つの方法にリンクできますか? – Anokrize

+0

また、アクションメソッドの送信者のようなテキストフィールドのインスタンスを取得する必要があります。 – Anokrize

+0

はい。デリゲートメソッドを見ると、最初のパラメータは常にアクションが取られているtextFieldです。だから、作成したテキストフィールド変数を参照しないで、デリゲートメソッドに渡された変数を使用します。 – Gargoyle

0

実装 - (void)textFieldDidBeginEditing:(UITextField *)UITextFieldDelegateプロトコルのtextFieldメソッド。例:

- (void)textFieldDidBeginEditing:(UITextField *)textField{ 
if textField.isEqual(firstTextField){ 
//some code 
} 
if textField.isEqual(secondTextField){ 
//other code 
} 
} 
+1

私はスウィフトを使用しています – Anokrize

+1

OSXでないiOS – Anokrize

+0

@Anokrizeああ、申し訳ありません。代わりにこれを試してください: コントロール(_:textShouldBeginEditing :) – Kmkrn

関連する問題