0

我的屏幕上有多个文本字段。我收到一个名为验证所有文本字段的 JSON 响应。我真正想要的是,只要用户不在正常值的范围内,我就应该能够为这些文本字段设置验证。我为此准备了一个逻辑:代码如下

     - (BOOL)textFieldShouldEndEditing:(UITextField *)textField;{
// Here we are checking if TextField is not equals to blank then we are performing 
 validations here.
if (![textField.text isEqualToString:@""]) {
    NSLog(@"%@",textField.UID);
    NSPredicate * predicate = [NSPredicate predicateWithFormat:@"column_name == %@",
     textField.UID];
    NSArray * arr = [[NSArray alloc] init];
    arr = [arr_vitalvalidations filteredArrayUsingPredicate:predicate];
    for (int i=0; i < [arr count]; i++) {
        NSString * str_maxValue = [[arr objectAtIndex:i] valueForKey:@"max_value"];
        NSString * str_minValue = [[arr objectAtIndex:i] valueForKey:@"min_value"];
        if ([textField.text floatValue] > [str_maxValue floatValue] || [textField.text 
       floatValue] < [str_minValue floatValue]) {
            NSString * str_message = [[arr objectAtIndex:i]
        valueForKey:@"message_note"];
            str_message = [str_message stringByReplacingOccurrencesOfString:@"%1" 
        withString:str_minValue];
            str_message = [str_message stringByReplacingOccurrencesOfString:@"%2" 
        withString:str_maxValue];
            DisplayAlert(str_message)

            [textField becomeFirstResponder];
            return NO;

        }
    }

}
return YES;

}

此代码实际上使其他文本字段处于休眠状态,因为现在我无法切换到其他文本字段,直到我将正确的值放入第一个文本字段中。我的屏幕上也有其他控件,但它们工作正常。例如,一个段控制器将高度的值(以厘米为单位)更改为英尺。该段控制器仍在工作,并且正确地更改了我必须阻止的值。此外,在按下返回按钮以离开此屏幕时,此代码显示警报消息 4 次。请帮我解决这个问题。一点帮助将不胜感激。

4

2 回答 2

1

给你的屏幕一些图像。另外,你会因为用户没有输入正确的字段而限制用户交互吗?

PS:我无法发表评论,这就是为什么我将其作为答案

于 2013-04-24T06:48:01.353 回答
0

为了解决您的问题,请尝试这样,它会帮助您,但我不知道它是否正确。取一个全局变量并更新值并在 textFieldShouldEndEditing 方法中比较该值并根据需要执行操作。

-(IBAction)backBtnAction:(id)sender{
    NSLog(@"close down ");
    n=10;
    [textfield resignFirstResponder];

}

用下面的行替换你的条件

if (![textField.text isEqualToString:@""] & n!=10)
于 2013-04-24T07:01:10.257 回答