gpt4 book ai didi

ios - UITextField 中允许删除的最大字符数?

转载 作者:行者123 更新时间:2023-11-29 03:19:26 24 4
gpt4 key购买 nike

我有一个 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;
}

目前,如果我在这些文本字段所填充的表中输入两个重复条目,我们的服务器会在末尾附加 _1234 四个随机数,以防止重复名称。因此,例如,如果我输入 abc,然后再次输入 abc,第二个将被命名为 abc_8252

如果我输入两个重复的 30 个字符的名称,仍会附加 _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;
}

关于ios - UITextField 中允许删除的最大字符数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21287378/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com