Простым хаком было бы поставить прозрачный вид поверх текстового представления, который бы перехватывал сенсорные события. Когда кто-то коснется прозрачности, установите текстовое представление на редактируемое, а также сделайте его первым респондентом, чтобы появилась клавиатура.
Затем, когда вы переуступаете статус первого респондента на клавиатуре (т.е. пользователь завершил редактирование), установите для редактируемого флага значение NO.
[EDIT]
Чтобы найти размер строки, чтобы вы могли выяснить, где сопоставить касание / курсор. Используйте это:
CGSize *sizeOfString = [YourString sizeWithFont:[UIFont systemFontOfSize:yourTextViewFontSize]
constrainedToSize:CGSizeMake(widthOfYourTextView,
heightOfYourTextView)
lineBreakMode:UILineBreakModeWordWrap];
[РЕДАКТИРОВАТЬ x2]
Вы пытались поместить два textview друг на друга? Один из них недоступен для редактирования с включенными детекторами данных, а другой - для редактирования, но с альфа-значением 0,0. Когда текст изменяется в одном, скопируйте текст в другой.