У меня есть 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;
Насколько яПоймите, первое должно определить положение верхнего конца курсора, а второе - нижнего.Однако они оба возвращают неправильные позиции.Я заметил, что текст во втором подходе также является неправильным текстом, и возвращаемая позиция курсора будет правильной для данного текста.Похоже, что он получает прикосновение неправильно или что-то еще, но курсор находится в правильном месте.
Что может быть не так?Заранее спасибо.