Я добавлю код, который использовал для перемещения курсора в начало строки (homeTap
), так как он обращается к некоторым комментариям в ответе @ zxcat относительно перемещения курсора в началоиз предыдущей строки, а не текущей строки:
- (void)homeTap:(id)s {
UITextRange* range = [_textView selectedTextRange];
CGRect rect = [_textView caretRectForPosition:range.start];
float halfLineHeight = _textView.font.lineHeight / 2.0;
UITextPosition* start = [_textView closestPositionToPoint:CGPointMake(0, rect.origin.y + halfLineHeight)];
[_textView setSelectedTextRange:[_textView textRangeFromPosition:start toPosition:start]];
}
В частности, я добавляю halfLineHeight
к rect.origin.y
, чтобы убедиться, что результат из closestPositionToPoint
относится к текущей строке.