【发布时间】:2015-03-25 05:38:13
【问题描述】:
我的应用程序中有很多 UITextField。
我不想让用户在这些文本字段中输入特殊字符。
我知道,我可以使用 UITextFiled 的 shouldChangeCharactersInRange 委托方法并对其进行验证,但是这种方法适用于 5-8 UITextFiled 而不是 15-20。
我想使用 RuntimeAttributes 和 UICategory 验证那些 (15-20) UITextFileds,如下链接:-
http://spin.atomicobject.com/2014/05/30/xcode-runtime-attributes/
我尝试创建 UITextFiled 的 UICategory 如下:-
UITextField+RunTimeExtension.h
@interface UITextField (RunTimeExtension)
@property(nonatomic,assign) BOOL *isAllowedSpecialCharacters;
@end
UITextField+RunTimeExtension.m
-(void)setIsAllowedSpecialCharacters:(BOOL *)isAllowedSpecialCharacters{
-(BOOL)isIsAllowedSpecialCharacters{
if(self.isAllowedSpecialCharacters){
NSCharacterSet *characterSet = [[NSCharacterSet alphanumericCharacterSet] invertedSet];
NSString *filtered = [[self.text componentsSeparatedByCharactersInSet:characterSet] componentsJoinedByString:@""];
return [self.text isEqualToString:filtered] || [self.text isEqualToString:@" "];
}else{
return NO;
}
}
并在 RuntimeAttribute 中添加此属性,如下图所示:
但是不管这个属性是否被选中都不起作用。
【问题讨论】:
-
你检查我的答案了吗?
标签: ios objective-c uitextfield uitextfielddelegate