是否有可能在 Interface-Builder 中定义 属性 并在代码中读取此 属性 ?
Is it somehow possible to define a property in Interface-Builder and read this property in code?
我有三个 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 中直观地定义...
有什么想法吗?
无法通过 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
}
我有三个 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 中直观地定义...
有什么想法吗?
无法通过 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
}