Tengo algunos en un controlador táctil que responde a un toque en una vista que he dibujado algún texto atribuido. A través de esto, llegué al punto en que tengo un CTRunRef
(y el asociado línea), así como el número de glifos en esa ejecución.Caracteres de mapeo CoreText
Lo que no puedo descifrar fácilmente, es cómo puedo tomar esa serie de glifos y, dada la cadena atribuida, asignarla a los caracteres de la cadena.
Específicamente el problema es que me gustaría saber qué palabra utilizó el usuario en la vista, así que puedo procesar si esa palabra es una URL y activar un método de delegado personalizado para poder abrir una vista web con eso. Tengo todas las subseries posibles, simplemente no sé cómo mapear donde el usuario tocó una subcadena en particular.
Cualquier ayuda sería muy apreciada.
ACTUALIZACIÓN: De hecho, me he ido y lo he hecho de otra manera, por sugerencia de otra persona fuera de stackoverflow. Básicamente lo que hice fue establecer un atributo personalizado, @"MyAppLinkAddress"
con el valor de la URL que encontré cuando convertía la cadena en una cadena atribuida. Esto sucede antes de dibujar la cadena. Por lo tanto, cuando ocurre un evento tap, simplemente compruebo si ese atributo existe, y si es así, llamo a mi método delegado, si no, simplemente ignórelo. Está funcionando como me gustaría ahora, pero voy a dejar esta pregunta abierta por unos días más, si alguien puede encontrar una respuesta, lo aceptaré felizmente si es una solución funcional para que otros puede ser capaz de encontrar esta información útil en algún momento en el futuro.
No necesita llamar 'UIGraphicsPopContext()' aquí. Estás obteniendo el contexto, no empujando uno nuevo. – mohsenr