如何对文本字段应用有关另一个文本字段值的验证?

时间:2011-10-19 12:20:08

标签: iphone uitextfield nsrange

我想在文本字段上应用验证。我有两个文本,我想在第二个文本字段值等于“AM”时只输入0-11值。如何应用与另一个文本字段值相关的验证文本?

提前致谢...

3 个答案:

答案 0 :(得分:0)

从第二个textfiled获取值,然后检查然后验证

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

答案 1 :(得分:0)

您可以通过在视图控制器中保留对两个文本字段的引用来实现您的设计。

但是,它更符合Apple的人机界面指南,使用UIPickerView从少于12的项目中进行选择。

答案 2 :(得分:0)

试试这种方式

- (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是第一个和第二个文本字段。将委托设置为两个文本字段。