У меня есть обработчик касания, который реагирует на нажатие на вид, на который я нарисовал некоторый атрибутный текст. Через это у меня есть точка, в которой у меня есть CTRunRef
(и связанный с ней line), а также количество глифов в этом запуске.Картинговые символы CoreText
Что я не могу легко вычислить, так это то, как я могу выполнить этот пробег глифов и, учитывая мою атрибутивную строку, сопоставить ее с символами в строке.
В частности, проблема заключается в том, что я хотел бы знать, какое слово пользователь прослушивал в представлении, поэтому я могу обработать, является ли это слово URL-адресом и отключить настраиваемый метод делегата, чтобы я мог открыть веб-представление с помощью Это. У меня есть все возможные подстроки, я просто не знаю, как сопоставить, где пользователь прослушивается определенную подстроку.
Любая помощь была бы принята с благодарностью.
ОБНОВЛЕНИЕ: Я действительно пошел и сделал это по-другому, по предложению другого человека от stackoverflow. В основном, я сделал, чтобы установить собственный атрибут, @"MyAppLinkAddress"
со значением URL, который я нашел, когда я преобразовал строку в атрибутированную строку. Это происходит до того, как я нарисую строку. Поэтому, когда происходит событие крана, я просто проверяю, существует ли этот атрибут, и если да, вызовите мой метод делегата, если нет, просто проигнорируйте его. Он работает так, как мне хотелось бы сейчас, но я собираюсь оставить этот вопрос открытым еще на несколько дней, если кто-то может придумать ответ, я с радостью приму его, если его рабочее решение так, чтобы некоторые другие может быть в состоянии найти эту информацию полезной в какой-то момент в будущем.
Вам не нужно вызывать 'UIGraphicsPopContext()' здесь. Вы просто получаете контекст, а не выдвигаете новый. – mohsenr