UITextView имеет метод setSelectedRange: (NSRange) range.
Если вы знаете, где в строке 13 находится строка, скажем, местоположение 237, то выполните: [textView setSelectedRange: NSMakeRange (237,0)];
Если вам нужно выяснить, где находится строка 13, у вас впереди еще много работы. Я бы начал с рассмотрения sizeWithFont, помня, что нужно убрать примерно 16 точек от ширины вашего textView, чтобы iOS правильно вычисляла суммы. (Тем не менее, если у вас есть разрывы строк, просто найдите расположение 13-го (или n-го) "\ n".)
Обновление по вашему запросу в комментарии
Существует множество способов найти положение nth \ n. Следующий фрагмент не симпатичен, но он сделает свою работу. Вы также можете использовать rangeOfString и перебирать «\ n». В этом фрагменте, если целевая строка больше, чем количество строк, курсор помещается в конец. Код здесь предполагает, что у вас есть свойство UITextView с именем userEntry.
int targetLine = 3; // change this as appropriate 0=first line
NSRange range;
NSString* exampleString = @"Hello there\nHow is it going?\nAre you looking for a new line?\nA new line in what?\nThat remains to be seen";
NSArray* separateLines = [exampleString componentsSeparatedByString:@"\n"];
if (targetLine < [separateLines count])
{
int count = 0;
for (int i=0; i<targetLine; i++)
{
count = count + [[separateLines objectAtIndex:i] length] + 1; // add 1 to compensate \n separator
}
range = NSMakeRange(count, 0);
}
else
{
range = NSMakeRange([exampleString length], 0); // set to the very end if targetLine is > number of lines
}
[[self userEntry] setText: exampleString];
[[self userEntry] setSelectedRange:range];
[[self userEntry] becomeFirstResponder];