Mi objetivo es marcar todas las palabras mal escritas visibles en un UITextView.¿Cómo encontrar eficientemente CGRects para palabras visibles en UITextView?
El algoritmo ineficiente es utilizar el corrector ortográfico para buscar todos los rangos de palabras mal escritas en el texto, convertirlos a objetos UITextRange utilizando positionFromPosition: inDirection: offset etc, luego obtener los rects de gráficos utilizando el método UITextInput firstRectFromRange.
lo tanto todo el texto -> mal escrito palabras-> colección NSRange -> colección UITextRange -> colección CGRect -> evaluar la visibilidad, dibujar las visibles
El problema es que esto requiere que todo el texto está marcada, y todas las palabras mal escritas se convierten a rects gráficos.
Por lo tanto, me imagino que el camino a seguir es encontrar de alguna manera las partes del texto subyacente en el UITextView que está visible en este momento.
Así, por rango de texto visible -> mal escrito palabras-> colección NSRange -> colección UITextRange -> colección CGRect -> evaluar la visibilidad, dibujar las visibles
El código en ios - how to find what is the visible range of text in UITextView? podría funcionar como una forma de cota qué partes del texto revisar, pero todavía requiere que se mida todo el texto, lo que imagino que podría ser bastante costoso.
¿Alguna sugerencia?
Niza. Para mayor eficiencia, busque el fin moviendo caracteres de longitud hacia delante desde el inicio; resulta que es lento desde el principio en un documento, pero es barato avanzar. –
Cuando dices "algo como esto debería funcionar", ¿lo has intentado de verdad? Esto está devolviendo casi el triple del rango del texto visual real para mí. Gracias. –
@JasonTyler [Aquí hay un repositorio que contiene una aplicación de prueba] (https://github.com/mayoff/textview-visible-range) Funciona muy bien para mí. Probablemente requiere Xcode 6. –