Как я могу изменить скопированный номер при вставке его в UITextView? - PullRequest
0 голосов
/ 13 мая 2018

Я пытаюсь скопировать номер в UITextView из приложения iPhone Notes .

снимок экрана: число, скопированное из приложения Notes

Но после копирования и вставки в текстовое представление моего приложения добавляется префикс (tel :). как: тел: 2234356778876

Я не хочу показывать тел: в моем UITextView, просто номер. Я добавил проверку в textview делегата метода shouldChangeTextInRange.

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    if(textView == destination) // destination is the textview
    {
        if([text hasPrefix:@"tel:"])
        {
            text = [text stringByReplacingOccurrencesOfString:@"tel:" withString:@""];
        }
    }
    return YES;
}

Но это ничего не меняет. Текстовое представление, показывающее полный телефон: 22xxxxxxxx номер. Что нужно изменить в этом случае?

Примечание. Если я копирую номер из Контакты или Safari , работающий, вставляется только номер. Но тел: добавлено для Notes app.

Спасибо.

1 Ответ

0 голосов
/ 13 мая 2018

text аргумент существует в контексте этой функции делегата, изменение его не будет отражать результат в вашем UITextView.

Вам нужно проверить, содержит ли строка "tel:", затем вручную обновить содержимое UITextView и вернуть NO из этой функции.

if([text hasPrefix:@"tel:"]) {
    NSString *cleanText = [text stringByReplacingOccurrencesOfString:@"tel:" withString:@""];
    textView.text = [textView.text stringByReplacingCharactersInRange:range withString:cleanText];
    return NO;
}
...