2012-04-19 2 views
0

4つのNSTextFieldボックスを持つ小さなプログラムを作成しています。それぞれのボックスは数式で他のボックスと関連しています。基本的に、私は今すぐあなたが箱からクリックした後、それはちょうど良い(あなたはボックスのいずれかに数字を入力することができます)を計算します。Objective-C(4つのNSTextField)でキーを押すたびにフィールドを計算する必要があります

私が欲しいのは、キーを押すたびに、ボックスアクションを呼び出して他のボックスを計算したいと思います。したがって、結果はただちに発生するはずです。ボックスやヒットタブなどをクリックした後だけでなく、

私はまだObjCを学んでいますので、私はドキュメントを見直そうとしましたが、私の問題に直接適用されるようです。

私は次のアクション定義しました:そう...正しい方法で計算関数を呼び出すいくつかのコードがあります、

を各1に対して

- (IBAction)boxX1:(id)sender; 
- (IBAction)boxY1:(id)sender; 
- (IBAction)boxX2:(id)sender; 
- (IBAction)boxY2:(id)sender; 

を、基本的な質問です。.. keyDown:イベントを監視するにはどうすればいいですか?具体的には、boxX1とboxY2でkeyDownイベントが発生し、(keyDownイベントの後に)ボックスの内容を取得して計算を実行できることを知っていますか?例えば、ここにboxX2のコードは

です:

- (IBAction)boxY2:(id)sender { 
    self.boxX2.stringValue = [ARCBrain calculateRatio:self.boxX1.stringValue times:self.boxY2.stringValue dividedBy:self.boxY1.stringValue]; 
} 

私はちょうどそれぞれのキー押下後にそれを呼び出すことができるようにする必要があります...いや、簡単に十分なようですか?この方法を使用することができるかどう

おかげ

+0

実際のキーダウンイベントを取得するには、サブクラス化する必要があります。それらをテキストで直接解釈する必要があるため、これらを必要としません。テキストフィールドを委任し、テキスト変更通知を監視する必要があります。参照してください:http://stackoverflow.com/questions/6164471/listen-to-a-value-change-of-my-text-field –

+0

申し訳ありませんが、私はまだObjCを学んでいるので、これを実装します。上記で使用しているコードをもう少し追加しました。たぶんそれは意味をなさないだろうか?私はcontrolTextDidChangeを実装しようとしましたが、メソッドは決して呼び出されません.. – DrDavid

+0

'controlTextDidChange:'を実装するオブジェクトが実際にはさまざまなテキストフィールドのデリゲートとして設定されていることを確認する必要があります。 Interface Builderで(フィールドには「デリゲート」コンセントがあります)、または「awakeFromNib: ':[boxX2 setDelegate:self];」 –

答えて

2

は、ここに私がやってしまったものです:

私はこの追加:-applicationDidFinishLaunchingに

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textDidChange:) name:NSControlTextDidChangeNotification object:nil]; 

を:方法とその後、追加:

-(void) textDidChange:(NSNotification *)obj { 
    if ([obj object] == self.boxX1) { 
     //do stuff 
    } else ... { 
    // Do other stuff 
    } 
    ... 
} 

授業へ..魅力的に働いた!

-1

チェック:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string; 
+0

これはUITextFieldDelegateメソッドです。 – Nilesh

+2

DrDavidが 'NSTextField'(MacOSの場合)と** NOT **' UITextField'について話しているので、私はあなたの答え、@Nileshを-1回しませんでした。違いがあります。 –

関連する問題