Ios UITextField中允许删除的最大字符数?
我有一个Ios UITextField中允许删除的最大字符数?,ios,objective-c,uitextfield,Ios,Objective C,Uitextfield,我有一个UITextField,我希望限制为30个字符。我是这样做的: - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSUInteger newLength = [tex
UITextField
,我希望限制为30个字符。我是这样做的:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range
replacementString:(NSString *)string
{
NSUInteger newLength = [textField.text length] + [string length] - range.length;
return (newLength > 30) ? NO : YES;
}
目前,如果我在这些文本字段填充的表中输入两个重复的条目,我们的服务器会在末尾添加四个随机数,以防止名称重复。因此,例如,如果我输入abc
,然后再次输入abc
,第二个将被命名为abc\u 8252
如果我输入两个重复的30个字符的名称,\u 9392
仍然会被追加,使条目包含35个字符,并且上面的代码会分开,因为replacementString
永远不会将其减少到30个字符以下
我想做的是,如果字符串是>30个
字符,只允许使用backspace
键,这样他们就可以将其向下移动,但不能再继续移动,一旦它下降到30以下,就不能再回到它上面。我可以这样做吗?像这样修复了它:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range
replacementString:(NSString *)string
{
// Allow a backspace always, in case we went over 30 due to the _1234 appending.
const char *_char = [string cStringUsingEncoding:NSUTF8StringEncoding];
int isBackSpace = strcmp(_char, "\b");
if (isBackSpace == -8) {
return YES;
}
// If it's not a backspace, allow it if we're still under 30 chars.
NSUInteger newLength = [textField.text length] + [string length] - range.length;
return (newLength > 30) ? NO : YES;
}