0

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

提前致谢...

4

3 回答 3

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

于 2011-10-19T12:43:53.367 回答
0

从第二个文本文件中获取值并检查然后验证

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);
}
于 2011-10-19T12:23:44.473 回答
0

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

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

于 2011-10-19T12:24:52.433 回答