2012-04-24 67 views
0

我遇到问题我正在跟踪由用户输入的字符及其正常工作,但随着用户删除文本字段和文本字段中的整个消息变为空,其提供文本字段文本长度= 1。 它应该是0,我没有得到它。任何帮助删除字符串后的uitextfield文本长度

- (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; 

    } 

回答

-1

您可能在完整的猜测中看到\ b字符。

0

你计算你charleft处理当前的击键,所以在Charlength.text值将会从之前,处理当前的按键值。如果您想Charlength显示其余字符,则需要在处理击键后对其进行更新。

还有另一个副作用,你应该知道这里:你不区分backspace和普通字符插入。一旦你超过了100个字符的阈值(因为我描述的错误,现在真的是101),你永远不会处理另一个字符,包括退格/删除。这意味着一旦你的用户超过了门槛,他们将被卡住,因为他们将无法删除一个字符。 (尝试一下)。

+0

是的,你是对的,我只是尝试过,它会发生什么?可能的解决方案是什么? – 2012-04-24 21:00:16

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更改选项将此uitextfield与此操作连接起来。