美文网首页iOS技术收藏
textView 聊天输入框光标恢复原位小技巧

textView 聊天输入框光标恢复原位小技巧

作者: 骑行怪状 | 来源:发表于2016-05-24 21:18 被阅读488次

标签(空格分隔): 即时通讯 textView 环信


在开发即时通讯时,我们使用 textView 作为输入框,当我们输入很多内容后,点击发送,光标位置会“不在原位”,上移。如下图箭头所指:

非正常状态下的光标非正常状态下的光标

光标正常情况应该是这样的:

正常状态的光标正常状态的光标

造成这个问题的原因?

textView 继承 scrollView 有一个 contentSize 属性,我们根据此属性获取 textview 的高度。

本来 textView 的 ContentOffset 和contentSize是在一个位置上的,ContentOffset.Y 为0, contentSize 也为(0,0) ,这里为了演示清楚将两张分开显示,其实图应该重叠。

正常情况光标位置正常情况光标位置

但是当文字内容输入很多后,文字会“上移”,contentSize 向上走了,Y 值会变大,然后 ContentOffset.Y > 0,所以按发送后,光标位置会向上偏移,造成这个情况。

光标偏移光标偏移

解决方案

在 textView 代理方法中添加下面两句代码就能搞定!

-(void)textViewDidChange:(UITextView *)textView{

[textView setContentOffset:CGPointZero animated:YES];
[textView scrollRangeToVisible:textView.selectedRange];

}

相关文章

网友评论

    本文标题:textView 聊天输入框光标恢复原位小技巧

    本文链接:https://www.haomeiwen.com/subject/bsgzrttx.html