UIAlertView在每个数字输入后无意中显示

时间:2010-02-04 13:24:40

标签: iphone objective-c uitextfield

这是我的文本字段的问题。

-(void)textFieldTextDidChange:(NSNotification *)notif
{
    event.eventName = eventTextField.text;
    event.eventPlace = eventPlaceTextField.text;
    event.eventWinery = wineryTitleLabel.text;
    int vintageVal = [vintageTextField.text intValue];
    if([vintageTextField.text length]>0 && [vintageTextField.text length] == 4)
    {
        event.eventVintage = vintageVal;
    }
    else 
    {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"!!! MESSAGE !!!"
                 message:@" Enter the Valid year in Format YYYY"
                 delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alert show]; 
        [alert release];
        return;
    }
}

如果用户输入四位数的年份,则只应将其保存到event.eventVitage 但是在输入数据时,我每个号码都会收到警报视图。

我做错了什么?

2 个答案:

答案 0 :(得分:0)

您的问题与if语句有关。

if([vintageTextField.text length]>0 && [vintageTextField.text length] == 4)

&&部分,您要检查长度是否为4.如果长度不是4,则调用else。您需要检查长度是否小于或等于4 <=,因此警报仅在长度大于4时显示----------------- -------------------------------------------------- ------------------!

if([vintageTextField.text length]>0 && [vintageTextField.text length]&LT = 4)

希望这会有所帮助并获得有趣的编码

答案 1 :(得分:0)

    if([vintageTextField.text length]>0 && [vintageTextField.text length] == 4)
{
    event.eventVintage = vintageVal;
}
else 
{....

这说:如果你的textString是4(这里大于0是多余的......)这意味着当它是1-2-3时它会运行else代码。

在这种情况下,我经常将文本灰显,直到用户输入足够的数字或禁用“保存”按钮。如果您没有任何方式让用户表明他已完成打字,则很难预见。