Сумма нескольких UITextfields без действия кнопки - PullRequest
0 голосов
/ 16 декабря 2011

Я новичок в разработке для iOS, и я застрял в этом одном вопросе ... на самом деле один из многих.

У меня есть простой кончик с 3 UITextfield и UILabel. Я хочу вычислить сумму из 3 чисел, введенных в каждое текстовое поле, без необходимости использовать действие кнопки ... в основном в режиме реального времени. enter image description here

@property (nonatomic, strong) IBOutlet UITextField *firstNumber;
@property (nonatomic, strong) IBOutlet UITextField *secondNumber;
@property (nonatomic, strong) IBOutlet UITextField *thirdNumber;
@property (nonatomic, strong) IBOutlet UILabel *total;

У меня настроена реализация, но я даже не знаю, как к этому подойти.

Ответы [ 3 ]

3 голосов
/ 16 декабря 2011

Сначала установите делегат self в ваше текстовое поле

- (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 голос
/ 16 декабря 2011

На самом деле есть 2 способа сделать это.

Вы можете настроить делегата и использовать:

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

Или вы можете использовать NSNotificationCenter и использовать:

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

Функция делегата - моя любимая, просто получите значения всех ваших текстовых полей в этом методе, добавьте их в каждое другое и возвращайте значение в любое время.

Центр уведомлений в основном делает то же самое, но вам придется выполнять вычисления в методе селектора (textDidChange :).

0 голосов
/ 16 декабря 2011

Вы хотите ограничить поля только числами.Убедитесь, что вы добавили класс в качестве делегата, если текстовые поля и:

- (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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...