Больший пробел между буквами в одной позиции в UITextField

#ios #objective-c #uitextfield

#iOS #objective-c #uitextfield uitextfield

Вопрос:

Для определения расстояния между ними я использовал

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

Но в этом случае мне нужно контролировать множество разных вещей для сохранения правильного формата. Например, если пользователь поместит курсор между 1 и 2 и добавит новую цифру. Или удалите цифру 1.

Как я могу установить больший интервал между определенными символами? Настроить UITextField каким-то образом, например.

введите описание изображения здесь

UPD: Я реализовал NSMutableAttributedString , но когда я использую его таким образом, курсор перемещается в конец строки каждый раз, когда я помещаю символы в центр текста. Так что, вероятно, это неподходящее место для размещения этого кода.

 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
NSString *futureString = [textField.text stringByReplacingCharactersInRange:range withString:string];
if(textField == phoneNumberTextField){
    if(futureString.length>=2){
        NSMutableAttributedString *attributedStr = [[NSMutableAttributedString alloc] initWithString:futureString];
        [attributedStr addAttribute:NSKernAttributeName value:@(5)
                              range:NSMakeRange(1, 1)];
        phoneNumberTextField.attributedText = attributedStr;
        return NO;
    }else
        if(futureString.length > 10){
        return NO;
    }
}
return YES;
 

}

Комментарии:

1. Используйте событие onChange и отредактируйте строку, добавив пробелы между числами

2. Вы могли бы использовать NSAttributedString и NSKernAttributeName .

3. Юрий, я не хочу добавлять лишние символы. Я хочу увеличить расстояние между символами.

4. посмотрите на github.com/Serheo/SHSPhoneComponent Он использует событие shouldChangeCharactersInRange. Может быть, это только один из способов сделать это.

5. Ларме, я пытался использовать NSAttributedString и NSKernAttributeName . Я думаю, это похоже на решение. Но где лучше всего его использовать?