我正在从事一个社交媒体类型的项目,我面临一个严重的问题。
这个项目在iTunes上运行了2年,所以很多用户的数据已经在服务器DB中了。
现在我们的客户说,每一个TextFiled的文本的第一个字母必须是大写的,我可以在UItextfiled类别的下面一行处理新的用户输入。
self.autocapitalizationType = UITextAutocapitalizationTypeWords;但是现有的数据呢?当现有的用户开始编辑时,我在textfield中显示的数据呢?
我已经在UItextField文本中应用了颜色和字体一致性的类别,但是如何覆盖UItextFiled设置器方法?
或者建议我换个方法。因为有超过100个文本文件,我如何处理它?有很多类,而不是为每个类编写代码--什么是更好的解决方案?
我在UItextField+CustomText类别中写了这段代码。
- (void)setText:(NSString *)str {
//str= uppercase code
//self.text=str; //this is recursive fn call
}每当我将任何文本分配给任何文本字段(textfield.text)时,都会调用此setter,但是如何将修改后的str重新分配给该特定的文本字段。
发布于 2015-08-04 08:49:05
也许你可以用目标来改变:
[textField addTarget:self
action:@selector(textFieldDidChange:)
forControlEvents:UIControlEventEditingChanged];更好的方法是在textfield autocapitalizationType中设置
self.textfield.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;发布于 2015-08-05 02:04:35
在使用自定义setter时,需要直接设置iVar。另外,它将是递归的无限堆栈,与您的代码相同。在你的情况下,下列情况应该可以。
- (void)setText:(NSString *)str {
strUpperCase= uppercase code
_str = strUpperCase;// or str = strUpperCase; // One of this
}发布于 2016-04-13 05:54:54
只需在覆盖范围内调用主管的方法:
- (NSString *)text
{
// do your extra stuff here
// ...
return [super text];
}
- (void)setText:(NSString *)text
{
[super setText:text];
// do your extra stuff here
// ...
}https://stackoverflow.com/questions/31804271
复制相似问题