Помощь с странной проблемой проверки текста в приложении iPHone - PullRequest
0 голосов
/ 31 января 2010

Я использую две формы проверки текста (одну, когда они нажимают Далее, другую, когда они вручную выбирают следующее текстовое поле для ввода), и он работает отлично. Тем не менее, последнее текстовое поле не проверяется на ошибку, и я не могу понять это.

Вы можете увидеть проблему в этом видео в последнем текстовом поле (http://screencast.com/t/ODJiOTAwMzA). Предыдущие четыре отлично работают, как вы можете видеть, но дно не так много.

Вот мой код:

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    if (textField == txtUserName)
    {
        NSString *userNameOne = txtUserName.text;
        double numOne = [userNameOne doubleValue];  

        if(numOne < 30 || numOne > 80)
        {

            //foo

            [txtUserName becomeFirstResponder];
            txtUserName.text = nil;
        }
        else 
        {
            [txtUserName2 becomeFirstResponder];
        }
    }

    else if (textField == txtUserName2)
    {

        NSString *userNameThree = txtUserName2.text;
        float numTwo = [userNameThree doubleValue]; 

        if (numTwo < 20 || numTwo > 32)
        {
            //foo

            [txtUserName2 becomeFirstResponder];
            txtUserName2.text = nil;
        }
        else
        {
            [txtUserName3 becomeFirstResponder];
        }
    }
    else if (textField == txtUserName3)
    {
        NSString *userNameThree = txtUserName3.text;
        float numThree = [userNameThree doubleValue];

        if (numThree < 475 || numThree > 650)
        {
            //foo

            [txtUserName3 becomeFirstResponder];
            txtUserName3.text = nil;
        }
        else
        {
            [txtUserName4 becomeFirstResponder];

        }
    }
    else if (textField == txtUserName4)
    {
        NSString *userNameFour = txtUserName4.text; 
        double numFour = [userNameFour doubleValue];

        if (numFour < 0.5 || numFour > 3.00)
        {

                        //foo

            [txtUserName4 becomeFirstResponder];
            txtUserName4.text = nil;
        }
        else
        {
            [txtUserName5 becomeFirstResponder];
        }
    }

    else if (textField == txtUserName5)
    {
        NSString *userNameFive = txtUserName5.text;
        double numFive = [userNameFive doubleValue];

        if (numFive > 1)
        {
                        //foo

        }
    }
    return NO;
}

и здесь

if (textField == txtUserName)
    {
        NSString *userNameOne = txtUserName.text;
        double numOne = [userNameOne doubleValue];  

        if(numOne < 30 || numOne > 80)
        {

                        //foo

            [txtUserName becomeFirstResponder];
            txtUserName.text = nil;
        }
        else 
        {
            [txtUserName2 becomeFirstResponder];
        }
    }

    else if (textField == txtUserName2)
    {

        NSString *userNameThree = txtUserName2.text;
        float numTwo = [userNameThree doubleValue]; 

        if (numTwo < 20 || numTwo > 32)
        {

                        //foo

            [txtUserName2 becomeFirstResponder];
            txtUserName2.text = nil;
        }
        else
        {
            [txtUserName3 becomeFirstResponder];
        }
    }
    else if (textField == txtUserName3)
    {
        NSString *userNameThree = txtUserName3.text;
        float numThree = [userNameThree doubleValue];

        if (numThree < 475 || numThree > 650)
        {
            //fo

            [txtUserName3 becomeFirstResponder];
            txtUserName3.text = nil;
        }
        else
        {
            [txtUserName4 becomeFirstResponder];

        }
    }
    else if (textField == txtUserName4)
    {
        NSString *userNameFour = txtUserName4.text; 
        double numFour = [userNameFour doubleValue];

        if (numFour < 0.5 || numFour > 3.00)
        {

            //foo

            [txtUserName4 becomeFirstResponder];
            txtUserName4.text = nil;
        }
        else
        {
            [txtUserName5 becomeFirstResponder];
        }
    }
    else if (textField == txtUserName5)
    {
        NSString *userNameFive = txtUserName5.text;
        double numFive = [userNameFive doubleValue];

        if (numFive > 1)
        {
            //foo
        }
        else
        {
            [txtUserName5 becomeFirstResponder];
        }
    }

1 Ответ

0 голосов
/ 31 января 2010

Если ваш интерфейс находится в Интерфейсном Разработчике, подключен ли выход txtUserName5?

Для вашего пятого текстового поля, почему у вас нет этих строк после "foo", как у других текстовых полей?

if (numFive > 1)
{
    //foo
    [txtUserName5 becomeFirstResponder];
    txtUserName5.text = nil;
}

Кроме того, для вашего предложения else вместо того, чтобы снова стать первым респондентом, вы должны подать в отставку первого респондента (чтобы убрать клавиатуру):

else
{
    //[txtUserName5 becomeFirstResponder];
    [txtUserName5 resignFirstResponder];
    return YES;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...