我有三个UITextField,我想限制其长度。第一个和第二个文本字段为24个字符,第三个文本字段为32个字符。
我发现this solution for limiting the characters in a UITextField非常合适:
#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;
}
但是这个解决方案建议,每个文本字段都限制为相同的长度(即代码片段顶部定义的10个字符)。我想知道是否有机会在XCode的Interface-Builder中分别为我的每个文本字段定义某种属性,这允许我在代码中读出 - 这样我就可以用某些东西替换“MAXLENGTH”比如“[textField valueForKey:@”maxLength“]”其中“maxLength”将在XCode Interface-Builder中直观地定义......
有什么想法吗?
答案 0 :(得分:1)
没有办法通过Interface Builder定义每个文本字段的最大长度,但代码中有一个简单的解决方案。
不是使用#define
作为最大长度,而是根据textField
参数计算最大长度。
假设您有三个名为field1
,field2
和field3
的文字字段。然后你可以做这样的事情:
- (BOOL)textField:(UITextField *) textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSUInteger maxLength = 24; // for field1 and field2
if (textField == self.field3) {
maxLength = 32;
}
// and now the rest of the processing
}