我是iOS开发的新手,我坚持这个问题......实际上是其中之一。
我有一个简单的笔尖,有3个UITextfield和一个UILabel。我想计算每个文本字段中输入的3个数字的总和,而不必使用按钮操作...基本上是实时的。
@property (nonatomic, strong) IBOutlet UITextField *firstNumber;
@property (nonatomic, strong) IBOutlet UITextField *secondNumber;
@property (nonatomic, strong) IBOutlet UITextField *thirdNumber;
@property (nonatomic, strong) IBOutlet UILabel *total;
我已经设置了实现,但我甚至不知道如何处理它。
答案 0 :(得分:3)
首先将委托自我设置为您的文本字段
- (void)viewDidLoad
{
[super viewDidLoad];
[firstTextField setDelegate:self];
[secondTextField setDelegate:self];
[thirdTextField setDelegate:self];
}
按以下方法计算总数。
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
total.text = [NSString stringWithFormat:@"d",([firstTextField.text intValue])+([secondTextField.text intValue])+([thirdTextField.text intValue])];
return YES;
}
答案 1 :(得分:1)
实际上有两种方法可以做到这一点。
您可以设置代理并使用:
- (BOOL) textField: (UITextField *) textField shouldChangeCharactersInRange: (NSRange) range replacementString: (NSString *) string;
或者您可以使用NSNotificationCenter并使用:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textDidChange:) name:UITextFieldTextDidChangeNotification object:nil];
委托函数是我最喜欢的,只需获取此方法中所有文本字段的值,将它们相互添加并随意返回值。
通知中心几乎做了同样的事情,但你必须在选择器方法(textDidChange :)中进行计算。
答案 2 :(得分:0)
您只想将字段限制为数字。如果文本字段为:
,请确保已将该类添加为委托- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSCharacterSet *nonNumberSet = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
return ([string stringByTrimmingCharactersInSet:nonNumberSet].length > 0);
}
更新字段on an interval:
- (void)updateTotal
{
double first = [firstNumber.text doubleValue];
double second = [secondNumber.text doubleValue];
double third = [thirdNumber.text doubleValue];
double tot = first+second+third;
NSString* totalString = [NSString stringWithFormat:@"%d", tot];
total.text = totalString;
}