UITextView selectedTextRange неправильно / позиция курсора - PullRequest
0 голосов
/ 04 июля 2019

У меня есть UITableView с ячейками, которые содержат UITextView.При нажатии на UITextView клавиатура отображается, и весь текстовый вид идет над клавиатурой.При прокрутке клавиатура отклоняется.UITextViews может быть большой высоты, и пользователь может захотеть нажать где-нибудь в середине текстового представления.Тогда я бы хотел, чтобы курсор в UITextView находился прямо над клавиатурой.Для этого я пытаюсь вычислить положение курсора в текстовом представлении и по какой-то причине большую часть времени ошибаюсь.Я попытался вычислить его двумя способами:

В -(void)textViewDidBeginEditing:(UITextView *)textView Я либо попробую с:

[textView caretRectForPosition:textView.selectedTextRange.start].origin

или с:

UITextRange *textRange = [textView textRangeFromPosition:textView.beginningOfDocument toPosition:textView.selectedTextRange.start];
NSString *text = [textView textInRange:textRange];

CGFloat width = textView.frame.size.width;
CGSize constraintSize = CGSizeMake(width, CGFLOAT_MAX);
CGRect boundingBox = [text boundingRectWithSize:constraintSize options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName: textView.font} context:nil];
CGFloat height = boundingBox.size.height;

Насколько яПоймите, первое должно определить положение верхнего конца курсора, а второе - нижнего.Однако они оба возвращают неправильные позиции.Я заметил, что текст во втором подходе также является неправильным текстом, и возвращаемая позиция курсора будет правильной для данного текста.Похоже, что он получает прикосновение неправильно или что-то еще, но курсор находится в правильном месте.

Что может быть не так?Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...