比较来自世界各地的卖家的域名和 IT 服务价格

设置最大长度 UITextField

有没有办法设置最大长度 UITextField?

像属性的东西 MAXLENGTH 在输入的领域 HTML.
已邀请:

二哥

赞同来自:

它适用于 backspace 和 copy & paste:


#define MAXLENGTH 10

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

NSUInteger oldLength = [textField.text length];
NSUInteger replacementLength = [string length];
NSUInteger rangeLength = range.length;

NSUInteger newLength = oldLength - rangeLength + replacementLength;

BOOL returnKey = [string rangeOfString: @"\n"].location != NSNotFound;

return newLength <= MAXLENGTH || returnKey;
}


UPDATE:

更新以接受返回键,即使它在 MAXLENGTH. 谢谢,罗杰斯先生!

小姐请别说爱

赞同来自:

UPDATE

我无法删除这个答案,因为它被接受,但他不对。 以下是复制的正确代码 TomA 以下:


#define MAXLENGTH 10

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

NSUInteger oldLength = [textField.text length];
NSUInteger replacementLength = [string length];
NSUInteger rangeLength = range.length;

NSUInteger newLength = oldLength - rangeLength + replacementLength;

BOOL returnKey = [string rangeOfString: @"\n"].location != NSNotFound;

return newLength <= MAXLENGTH || returnKey;
}


ORIGINAL

我觉得你的意思是 UITextField. 如果是这样,也就是说,这是一种简单的方法。

协议实施 UITextFieldDelegate

实施方法
textField:shouldChangeCharactersInRange:replacementString:

.

使用每种符号或以前的符号替换调用此方法。 在此方法中,您可以执行类似的操作:


- /BOOL/textField:/UITextField */textField shouldChangeCharactersInRange:/NSRange/range replacementString:/NSString */string {
if /[textField.text length] > MAXLENGTH/ {
textField.text = [textField.text substringToIndex:MAXLENGTH-1];
return NO;
}
return YES;
}

小明明

赞同来自:

正确处理反向空间的最佳功能并将字符限制为长度提供的长度,如下:


#define MAXLENGTH 8

- /BOOL/textField:/UITextField */textField shouldChangeCharactersInRange:/NSRange/range replacementString:/NSString */string
{
int length = [textField.text length] ;
if /length >= MAXLENGTH && ![string isEqualToString:@""]/ {
textField.text = [textField.text substringToIndex:MAXLENGTH];
return NO;
}
return YES;
}


欢呼!

知食

赞同来自:

此代码限制了文本,并允许您输入字符或在文本中的任何位置插入它们。 如果生成的文本太长,它将改变范围中的字符,并将结果文本截断到极限。


- /BOOL/textField:/UITextField */textField shouldChangeCharactersInRange:/NSRange/range replacementString:/NSString */string
{
NSUInteger newLength = [textField.text length] - range.length + [string length];
if /newLength >= MAXLENGTH/ {
textField.text = [[textField.text stringByReplacingCharactersInRange:range withString:string] substringToIndex:MAXLENGTH];
return NO;
}
return YES;
}

窦买办

赞同来自:

我认为这段代码将完成它的工作:


- /BOOL/textField:/UITextField */textField shouldChangeCharactersInRange:/NSRange/range 
replacementString:/NSString*/string
{
if /range.location >= MAX_LENGTH/
return NO;
return YES;
}


使用此委派方法,您可以禁止用户向文本字段添加更多字符 MAX_LENGTH, 如有必要,允许用户引入反向空间。

知食

赞同来自:

对我来说,这是魔术:


if /textField.text.length >= 10 && range.length == 0/
return NO;
return YES;

冰洋

赞同来自:

这就是我解决这个问题的方式。 达到最大限制时,它不会尝试添加更多...您可以删除仅删除字符


#define MAX_SIZE //int/ 5/
...

- /BOOL/textField:/UITextField */textField shouldChangeCharactersInRange:/NSRange/range replacementString:/NSString */string {
if /[textField.text length] >= MAX_SIZE && ![string isEqualToString:@""]/ {
return NO;
}

return YES;
}

帅驴

赞同来自:

我认为没有这样的财产。

但是你分配的文本 UILabel, 它应该是 NSString. 在将此字符串分配给Text属性之前 UILabel, 例如,您可以使用以下方法 NSString 用于指定索引上的修剪字符串 /你的最大长度/:


- /NSString */substringToIndex:/NSUInteger/anIndex

冰洋

赞同来自:

您需要知道文本所在的位置,以及添加文本的长度。 /如果他们插入多个符号/. 它们之间的图案相对于最大长度是它们的总和永远不应超过最大长度。


- /BOOL/textField:/UITextField */textField shouldChangeCharactersInRange:/NSRange/range replacementString:/NSString */string {
NSInteger locationAndStringLengthSum = range.location + [string length];

if /[textField isEqual:_expirationMonthField]/ {
if /locationAndStringLengthSum > EXP_MONTH_FIELD_MAX_CHAR_LENGTH/ {
return NO;
}
}
else if /[textField isEqual:_expirationYearField]/ {
if /locationAndStringLengthSum > EXP_YEAR_FIELD_MAX_CHAR_LENGTH/ {
return NO;
}
}
else if /[textField isEqual:_securityCodeField]/ {
if /locationAndStringLengthSum > SECURITY_FIELD_MAX_CHAR_LENGTH/ {
return NO;
}
}
else if /[textField isEqual:_zipCodeField]/ {
if /locationAndStringLengthSum > ZIP_CODE_MAX_CHAR_LENGTH/ {
return NO;
}
}

return YES;
}

知食

赞同来自:

它看起来像一个针叶缘答案,但现在文本字段可以包含最大值 MAXLENGTH 符号:


- /BOOL/textField:/UITextField */textField shouldChangeCharactersInRange:/NSRange/range replacementString:/NSString */string {
if /[textField.text length] > MAXLENGTH - 1/ {
textField.text = [textField.text substringToIndex:MAXLENGTH];
return NO;
}
return YES;
}

小姐请别说爱

赞同来自:

您需要指定代表
ViewDidLoad



TextFieldname.delegate=self

要回复问题请先登录注册