TextField: shouldChangeCharactersInRange: replaceString: возврат ловушки! - PullRequest
0 голосов
/ 11 мая 2011

Я вызываю метод делегата UITableViewCell TextField: shouldChangeCharactersInRange: replaceString: в пользовательской ячейке, имеющей четыре поля UITextField, и то, что происходит после достижения максимальной длины в одном из полей, не дающих вводить текст в другие поля, потому что он всегдавозвращая "нет" для этого начального, если утверждение удовлетворяется.есть идеи как обойти это?

В данный момент я тестирую только два поля.Спасибо за любую помощь заранее.

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    int regFieldOnelength = [regFieldOne.text length] ;
    int regFieldTwolength = [regFieldTwo.text length] ;


    if ((regFieldOnelength >= MAXLENGTH && ![string isEqualToString:@""]) || (regFieldTwolength >= MAXLENGTH && ![string isEqualToString:@""])) {
        if(regFieldOne.text = [regFieldOne.text substringToIndex:MAXLENGTH]){
            return NO;
        }
        if(regFieldTwo.text = [regFieldTwo.text substringToIndex:MAXLENGTH]){
            return NO;
        }
    }


    return YES;
}

Ответы [ 2 ]

4 голосов
/ 11 мая 2011

Почему вы используете текстовое поле, вместо этого используйте текущее текстовое поле, которое редактируется

    -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
    {
        int currentTxtLen = [textField.text length] ;
        if (currentTxtLen >= MAXLENGTH && ![string isEqualToString:@""]) {
            return NO;
        }
        return YES;
}
0 голосов
/ 11 мая 2011

Можете ли вы попробовать

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    int regFieldOnelength = [regFieldOne.text length] ;
    int regFieldTwolength = [regFieldTwo.text length] ;

if((textField == regFieldOne) ||(textField == regFieldTwo)) {

    if ((regFieldOnelength >= MAXLENGTH && ![string isEqualToString:@""]) || (regFieldTwolength >= MAXLENGTH && ![string isEqualToString:@""])) {
        if(regFieldOne.text = [regFieldOne.text substringToIndex:MAXLENGTH]){
            return NO;
        }
        if(regFieldTwo.text = [regFieldTwo.text substringToIndex:MAXLENGTH]){
            return NO;
        }
    }


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