我有一个获取信用卡输入的UITextField。在用户输入第4个字符后,如何在用户输入信用卡号时,如果iOS的Groupon应用程序输入短划线,我该如何自动插入短划线?提前谢谢。
答案 0 :(得分:0)
我想的更难。文本更改时发送的常见通知是UITextFieldTextDidChangeNotification。在viewDidLoad方法中,您应该注册接收此通知并在文本更改时执行选择器。在选择器中,每4个字符添加一个短划线。
在我的代码中,textfield名为 textField 。
- (void)viewDidLoad
{
[super viewDidLoad];
NSNotificationCenter* center=[NSNotificationCenter defaultCenter];
[center addObserver: self selector: @selector(textDidChange:) name: UITextFieldTextDidChangeNotification object: textField];
}
- (void) textDidChange : (NSNotification*) notification
{
NSString* string=[[textField text] stringByReplacingOccurrencesOfString: @"-" withString: @""];
__block NSMutableString* newString= [string mutableCopy];
NSMutableIndexSet* set=[NSMutableIndexSet new];
for(NSUInteger i=4; i<[string length];i+=4)
{
[set addIndex: i+i/4-1];
}
[set enumerateIndexesInRange: NSMakeRange(0, [string length]+[string length]/4) options: 0 usingBlock: ^(NSUInteger index, BOOL* stop)
{
[newString insertString: @"-" atIndex: index];
}];
[textField setText: newString];
}
每4个字符添加短划线的代码很长,也许有一个更短的方法。
PS:最后一个版本不正确,我编辑了它(无法正确删除字符)。
答案 1 :(得分:0)