#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 . Я думаю, это похоже на решение. Но где лучше всего его использовать?