0

我遇到了一个问题,我正在跟踪用户输入的字符并且它工作正常,但是当用户删除文本字段中的整个消息并且文本字段变为空时,它给出文本字段文本长度 = 1。它应该是 0 ,我我没有得到这一切。任何帮助

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

    if (textField ==  textfield1)
    {


        NSLog(@"%d",textfield1.text.length);
        NSInteger charleft = (100 - textfield1.text.length);
        NSLog(@"The Characters left are %d",charleft);
        while(!(charleft<0))
        {

            NSString *Charlength= [NSString stringWithFormat:@"%d",charleft];    
            Charcount.text= [ Charlength stringByAppendingFormat:@" Characters left"];
            return YES;

        }


        return NO;

    }
4

3 回答 3

1
int maxChars = 100;
    int charsLeft = maxChars - [textField.text length];

    if(charsLeft == 0) {
        UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"No more characters"
                                                         message:[NSString stringWithFormat:@"You have reached the character limit of %d.",maxChars]
                                                        delegate:nil
                                               cancelButtonTitle:@"Ok"
                                               otherButtonTitles:nil];
        [alert show];
        [alert release];
    }
    NSString *chrstr = [NSString stringWithFormat:@"%d characters remaining.",charsLeft];
    Charcount.text=chrstr;//
 NSLog(@"%@",chrstr;
},

它解决了我的问题,我使用 editind changed 选项将我的 uitextfield 与此操作连接起来。

于 2012-04-25T14:41:20.807 回答
0

您在charleft处理当前击键之前进行计算,因此 in 的值Charlength.text将是处理当前击键之前的值。如果要Charlength显示剩余字符,则需要在处理完击键后对其进行更新。

您应该在这里注意另一个副作用:您没有将退格与常规字符插入区分开来。一旦超过 100 个字符的阈值(现在真的是 101 个,因为我描述的错误),您将永远不会处理另一个字符,包括退格/删除。这意味着一旦您的用户超过阈值,他们就会被卡住,因为他们将无法删除角色。(试试看)。

于 2012-04-24T20:51:13.463 回答
-1

您可能完全猜到了 \b 字符。

于 2012-04-24T18:36:39.727 回答