如何在objective-c中一次写入两个字段?

时间:2011-09-29 08:33:07

标签: iphone objective-c uitextfield formula

我有两个UITextFields一个字段是RISK而另一个是WIN。现在,当用户开始在RISK字段中写入时,它应该相应地计算WIN的值,并且应该在WIN字段中填充。公式就是这个

    if (a<0) {
        WIN = RISK/(-a/100)

    }
    else {
                    WIN = RISK*(a/100)
    }

如果在WIN中输入值,那么它应该填充RISK中的值,公式为 if(a&lt; 0){

        RISK = WIN*(-a/100)
    }
    else {
        RISK= WIN*(100/a)

    }

所以请大家指导我如何在不按任何按钮的情况下填充字段,如何计算值? Thanx提前

4 个答案:

答案 0 :(得分:2)

您应该实现UITextFieldDelegate。将类(可能是视图控制器)设置为WIN文本字段的委托,然后实现此方法。

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

在方法内部,将字符串转换为数字,运行公式,更改RISK文本字段的值并返回YES。

答案 1 :(得分:1)

假设每个字段都有一个属性:

@property (nonatomic, retain) IBOutlet UITextField win;
@property (nonatomic, retain) IBOutlet UITextField risk;

IBAction方法:

- (IBAction) winDidChange: (id) sender;
- (IBAction) riskDidChange: (id) sender;

在界面构建器中将这些内容隐藏到编辑已更改事件:

enter image description here

您的方法将类似于:

- (IBAction) winDidChange: (id) sender
{
   float winValue = [self.win.text floatValue];
   float riskValue = <your calculation here>
   self.risk.text = [NSString stringWithFormat: @"%f", riskValue];

}

..同样适用于riskDidChange:

如果您将win字段的编辑已更改事件与界面构建器中的winDidChange: IBAction相关联({{1}也是如此}),每次在字段中输入字符时都会调用该方法。

您应该阅读http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaDesignPatterns/CocoaDesignPatterns.html

中的目标 - 操作机制部分

答案 2 :(得分:0)

您可以实现委托方法(UITextFieldDelegate)以使用以下方法....

  • textFieldShouldBeginEditing:
  • textFieldDidBeginEditing:
  • textFieldShouldEndEditing:
  • textfieldDidEndEditing:
  • 文本字段:shouldChangeCharactersInRange:replacementString:

当值更改时,您可以使用这些委托方法更新其他值。

答案 3 :(得分:0)

您需要做的就是

[myTextField addTarget:self action:@selector(myFunction:) forControlEvents:UIControlEventEditingChanged];

然后

 - (void)myFunction:(id)sender {

     //calculate and show in WIN field

 }