如何在Objective-C中的每第四个字符后输入短划线

时间:2012-11-13 09:15:52

标签: objective-c input uitextfield

我有一个获取信用卡输入的UITextField。在用户输入第4个字符后,如何在用户输入信用卡号时,如果iOS的Groupon应用程序输入短划线,我该如何自动插入短划线?提前谢谢。

2 个答案:

答案 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)

这对我来说非常有效:

iOS automatically add hyphen in text field

通过“野狗天空”检查答案。