|
|
|
@ -49,12 +49,10 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
|
|
NSString *center = insertionText.digitsOnly;
|
|
|
|
|
// 4. Construct the "raw" new text by concatenating left, center and right.
|
|
|
|
|
NSString *textAfterChange = [[left stringByAppendingString:center] stringByAppendingString:right];
|
|
|
|
|
// 4a. Ensure we don't exceed the maximum length for a e164 phone number,
|
|
|
|
|
// 15 digits, per: https://en.wikipedia.org/wiki/E.164
|
|
|
|
|
const int kMaxPhoneNumberLength = 15;
|
|
|
|
|
if (textAfterChange.length > kMaxPhoneNumberLength) {
|
|
|
|
|
textAfterChange = [textAfterChange substringToIndex:kMaxPhoneNumberLength];
|
|
|
|
|
}
|
|
|
|
|
// NOTE: We can't ensure that the number does not exceed the maximum length for a e164 phone number,
|
|
|
|
|
// 15 digits, per: https://en.wikipedia.org/wiki/E.164
|
|
|
|
|
// because "valid numbers in Germany have been assigned that are longer than this" per:
|
|
|
|
|
// https://github.com/googlei18n/libphonenumber/blob/master/FALSEHOODS.md
|
|
|
|
|
// 5. Construct the "formatted" new text by inserting a hyphen if necessary.
|
|
|
|
|
// reformat the phone number, trying to keep the cursor beside the inserted or deleted digit
|
|
|
|
|
bool isJustDeletion = insertionText.length == 0;
|
|
|
|
|