Я использую две формы проверки текста (один, когда они нажимают «Далее», другое, когда они вручную выбирают следующее текстовое поле для ввода), и оно отлично работает. Однако последнее текстовое поле не получает ошибку, и я не могу понять это.Помогите с проблемой Weird Text Validation в приложении iPHone
Вы можете увидеть эту проблему в этом видео в последнем текстовом поле (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];
}
}
спасибо за ответы. Я могу рассмотреть проблемы, которые вы указали, но это все еще не помогает моей проблеме пятого текстового поля, которое не проверяется. Кроме того, пятое текстовое поле подключается к IB, как вы можете видеть здесь (http://screencast.com/t/NWE5NGI3NTM). Я ценю любую помощь, которую вы можете предоставить. – HollerTrain
Установите точку останова и/или используйте NSLog. Является ли ваш код проверки ударом? Каковы значения в сравнении? – gerry3
Спасибо за вашу дальнейшую помощь. Вот видеоролик о нем, показывающий, что предыдущие поля работают с настройкой точек останова, но когда я устанавливаю его в последнее поле, он ничего не делает, что делает это еще более странным для меня. (http://screencast.com/t/NjY2MjMyM2Q) – HollerTrain