OHAttributedLabel прекрасно работает на iPad, но не на iPhone - PullRequest
1 голос
/ 08 сентября 2011

Я использую класс NSTextCheckingResult для отображения текста в виде ссылок.Я использую OHAttributedLabels для работы с ним.

Я хочу обнаружение только для телефонных номеров и идентификатора электронной почты.То есть я хочу, чтобы номера телефонов и идентификаторы электронной почты выделялись как ссылки

Теперь проблема в том, что приведенный ниже код прекрасно работает для iPad, но не для iPhone:тот же код показывает даже 5-значные ZipCodes как ссылку в iPhone.Он отлично работает в iPad.Что может быть не так?

Ответы [ 2 ]

2 голосов
/ 08 сентября 2011

Я создатель класса OHAttributedLabel. Спасибо за использование!

Как уже было дано вам напрямую по электронной почте, OHAttributedLabel использует Apple NSDataDetector class для автоматического обнаружения ссылок в тексте.

Так что, если есть ошибочно распознанные ссылки, особенно ложные срабатывания, это связано с реализацией NSDataDetector Apple OHAttributedLabel, к сожалению, не может многое сделать для этого). Единственное, что кажется странным, это то, что NSDataDetector не обнаруживает одинаковые ссылки на iPad и iPhone ...


Единственный обходной путь , который вы можете реализовать, если вас не устраивают ссылки, найденные в NSDataDetector Apple, - это удалить значение NSTextCheckingTypePhoneNumber из automaticallyAddLinksForType и найти ссылки самостоятельно, например, используя класс NSRegularExpression.

В любом случае, если вы собираетесь, будьте осторожны, так как обнаружение телефонных номеров вручную не является тривиальным и довольно сложным. В частности, формат телефонных номеров зависит от страны, для которой предназначен телефонный номер (телефоны в США не соответствуют французским или британским), они могут быть отформатированы с использованием пробелов или тире (или нет), они могут быть в международном формате. (+336 07 ...) и так далее ...

На самом деле, это, вероятно, из-за такой сложности, что NSDataDetector от Apple не может избежать ложноположительных совпадений ...

НТН

1 голос
/ 08 сентября 2011

Попробуйте чуть ниже строки, потому что я успешно запускаю код, а также работает в iPhone.

label2.automaticallyAddLinksForType = NSTextCheckingTypeDate|NSTextCheckingTypeAddress|NSTextCheckingTypeLink|NSTextCheckingTypePhoneNumber;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...