Формат ввода в поле NSTextField

Рейтинг: 2Ответов: 1Опубликовано: 30.03.2011

Есть поле NSTextField и нужно сделать так, чтоб в него можно было вводить только цифры и, чтоб они имели такой вид: "123-456-789"

Эту задачу я решил NSNumberFormatter:

NSString *myString = @"12345678";
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setGroupingSeparator:@"-"];
[formatter setGroupingSize:3];
[formatter setMaximumIntegerDigits:9];
NSString *formattedOutput = [formatter stringFromNumber:[NSNumber numberWithInteger:[myString intValue]]];

Но проблема в том, что форматирование проходит не справа, а слева, то есть имеем:

"12-345-678",

а нужно чтоб было так: "123-456-78"

Ответы

▲ 3Принят

Не знаю, как это должно быть реализованно при помощи NSNumberFormatter, но можно ведь вручную добавлять разделитель. Вот как-то так:

// field - поле ввода (NSTextField)
NSMutableString *temp = [NSMutableString stringWithString:[field stringValue]];

int index=3;
if ([temp length] <=3) {
    return;
}
while (index < [temp length]) {
    [temp insertString:@"-" atIndex:index];
    index +=4;
}

Ну а если, конечно, возможен ввод только 8 или 9 цифр, тогда предыдущее решение более удобное.