我遇到问题我正在跟踪用户输入的字符及其正常工作但是当用户在文本字段中删除整个邮件时,文本字段变为空,其给出文本字段文本长度= 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;
}
答案 0 :(得分: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连接到此操作。
答案 1 :(得分:0)
您在处理当前击键之前计算charleft
,因此Charlength.text
中的值将是中处理当前击键之前的值。如果您希望Charlength
显示剩余的字符,则需要在处理完按键后更新它。
您应该注意另一个副作用:您没有区分退格与常规字符插入。一旦超过100个字符的阈值(现在真的是101,因为我描述的错误),你将永远不会处理另一个字符,包括退格/删除。这意味着一旦您的用户超过阈值,他们就会被卡住,因为他们将无法删除字符。 (试试吧)。
答案 2 :(得分:-1)
你可能会看到\ b字符,完全猜测。