Use sizeWithFont: de las adiciones de NSString UIKit para obtener el ancho de cada línea, luego configure la propiedad contentSize de su UITextView para que sea ligeramente más ancha que el ancho de la línea más larga.
Tuve un problema al intentar esta estrategia, que surge al asignar una cadena a una propiedad de texto de UITextView. En la asignación, UITextView configurará su contentSize.width para que coincida con el ancho de la vista e insertará nuevas líneas en la cadena de texto asignada para ajustarla a ese ancho. Puede establecer contentSize.width a la longitud de su línea más larga después de asignar uitextview.text, y esto le da espacio adicional en la vista de desplazamiento, pero las nuevas líneas evitan que el texto ocupe el nuevo espacio.
Si configura contentsize.width antes de cargar su texto en la vista, contentSize simplemente se restablece cuando carga el texto.
Intenté aumentar el tamaño del marco de la vista de texto antes de cargarlo, esto funciona para permitir que las líneas largas pasen el borde de la pantalla. Sin embargo, no puede desplazarse, y en el momento en que reduce el tamaño del marco, se produce nuevamente el cambio de la línea nueva de su texto y el reajuste de contentSize. Lo mismo ocurre si se ingresa texto en la vista.
Bueno, estoy convencido de que uitextviews simplemente no son aptos o no para el desplazamiento horizontal en este punto. No veo cómo la incrustación de una vista de texto dentro de otra vista de desplazamiento podría aliviar esto tampoco. Solo tiene que hacerlo en HTML ...