我有一个获取信用卡输入的 UITextField。如何在用户输入第 4 个字符后自动插入破折号,就像用户输入信用卡号时 iOS 的 Groupon 应用程序一样?提前致谢。
问问题
2250 次
2 回答
0
这比我想的更难。文本更改时发送的常见通知是 UITextFieldTextDidChangeNotification。在 viewDidLoad 方法中,您应该注册以接收此通知并在文本更改时执行选择器。在选择器中,您每 4 个字符添加一个破折号。
在我的代码中,文本字段被命名为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:上一个版本不正确,我编辑了它(无法正确删除字符)。
于 2012-11-13T11:23:23.480 回答
0
于 2012-11-28T06:37:56.253 回答