没有按钮操作的多个UITextfields的总和

我是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; 

我已经设置了实现,但我甚至不知道如何处理这个问题。

首先将委托自我设置为您的文本字段

 - (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; } 

实际上有两种方法可以做到这一点。

您可以设置委托并使用:

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

或者您可以使用NSNotificationCenter并使用:

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

委托函数是我最喜欢的,只需在此方法中获取所有文本字段的值,将它们相互添加并返回值,无论您喜欢什么。

通知中心几乎做了同样的事情,但你必须在选择器方法(textDidChange :)中进行计算。

您只想将字段限制为数字。 如果文本字段和以下内容,请确保已将该类添加为委托:

 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSCharacterSet *nonNumberSet = [[NSCharacterSet decimalDigitCharacterSet] invertedSet]; return ([string stringByTrimmingCharactersInSet:nonNumberSet].length > 0); } 

按间隔更新字段:

 - (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; }