0

4つのNSTextFieldボックスを持つ小さなプログラムを作成しています。各ボックスは、数式によって他のボックスと関連付けられています。基本的に、私は今それを機能させており、ボックスからクリックした後、他のボックスをうまく計算します(どのボックスにも数値を入力できます)。

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

私はまだObjCを学んでいるので、ドキュメントを確認しようとしましたが、それらは私の問題に直接当てはまらないようです。

次のアクションを定義しました。

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

それぞれについて、正しい方法で計算関数を呼び出すコードがいくつかあります...

したがって、基本的な質問は次のとおりです。keyDown:イベントを監視するにはどうすればよいですか。具体的には、keyDownイベントがboxX1とboxY2で発生したことを確認し、(keyDownイベントの後の)ボックスのコンテンツを取得して実行できるようにします。計算?

たとえば、boxX2のコードは次のとおりです。

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

キーを押すたびに呼び出すことができる必要があります。簡単そうですね。

ありがとう

4

2 に答える 2

2

これが私がやったことです:

私はこれを追加しました:

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

-applicationDidFinishLaunching:メソッドに追加し、次を追加しました。

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

クラスに..魅力のように働いた!

于 2012-04-20T02:26:43.433 に答える
-1

この方法を使用できるかどうかを確認してください。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string; 
于 2012-04-19T19:31:49.830 に答える