ScrollView中的iOS TextView插入新行中的错位

时间:2017-07-11 10:33:21

标签: ios swift uiscrollview autolayout uitextview

我有以下布局,well know approach在ScrollView中使用TextView。

enter image description here

整体效果非常好但是有一个小问题让我很烦恼。

enter image description here

看看插入符号。插入新行时,autolayout不会更新。它只会在添加新字符时更新约束,并且突然显示该行再次正确显示。 对于上下文,当仅使用没有scrollViews的TextView时,这非常有效,所以我想知道是否还需要手动模拟该行为。

现在我在view.layoutIfNeeded()代表处触发textViewDidChange来解决问题,但这对我来说太过分了。

提前致谢。

1 个答案:

答案 0 :(得分:0)

好问题!

在您的textViewDidChange方法中使用它:

- (void)textViewScrollToCarretIfNeeded:(UITextView *)textView {
    CGRect caretRectInsideTextView = [textView caretRectForPosition:textView.selectedTextRange.start];
    CGRect caretRectInsideScrollView = [self.scrollView convertRect:caretRectInsideTextView fromView:textView];
    [self.scrollView scrollRectToVisible:caretRectInsideScrollView animated:YES];
}

您可以使用在线服务将其转换为快捷方式。