Как применить проверку к текстовому полю относительно значения другого текстового поля? - PullRequest
0 голосов
/ 19 октября 2011

Я хочу применить проверку к текстовому полю. У меня есть два текстовых поля, и я хочу ввести только значение 0-11, когда значение второго текстового поля равно «AM». Как применить проверочный текст, поданный в отношении значения другого текстового поля?

Заранее спасибо ...

Ответы [ 3 ]

0 голосов
/ 19 октября 2011

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

Тем не менее, в соответствии с Руководством Apple по человеческому интерфейсу было бы намного лучше использовать UIPickerView для выбора из числа элементов менее 12.

0 голосов
/ 19 октября 2011

попробуйте так

- (BOOL) textFieldShouldBeginEditing:(UITextField *)textField{

    if(textField==self.txt1 && [self.txt2.text isEqualToString:@"AM"]){

        [self.txt1 setKeyboardType:UIKeyboardTypeNumberPad];
    }
    return YES;
}
- (BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{

    if ([string isEqualToString:@""]) {
        return YES;
    }

    if(textField==self.txt1 && [self.txt2.text isEqualToString:@"AM"]){

        int no=[self.txt1.text intValue];
        NSLog(@"%d",no);
        int enteredno=[string intValue];
        int sum=no*10+enteredno;
        if (sum>11) {
            return NO;
        }

    }
    return YES;
}

Здесь txt1 и txt2 - это первое и второе текстовые поля. Установите делегат для обоих текстовых полей.

0 голосов
/ 19 октября 2011

получить значение из второго текстового файла и проверить, затем подтвердить, как

if([secTxtField.text isEqualToString:@"AM"])
{
  //do the validation for the first
}

сначала проверьте только числа здесь,

   - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
            static NSCharacterSet *charSet = nil;
            if(!charSet) {
                charSet = [[[NSCharacterSet characterSetWithCharactersInString:@"0123456789"] invertedSet] retain];
            }
            NSRange location = [string rangeOfCharacterFromSet:charSet];
      if(!(location.location == NSNotFound))
    {
      if([secTxtField.text isEqualToString:@"AM"])
      {
          //get the first textField input
         //Conver to int
        //Check for less than 11 
        if (pass) 
        {
            return YES;
       }
       else
       {
          return NO;
       }
      }
    }
            return (location.location == NSNotFound);
}
...