標簽(空格分隔): 即時通訊 textView 環(huán)信
在開發(fā)即時通訊時狞换,我們使用 textView 作為輸入框,當我們輸入很多內(nèi)容后裕坊,點擊發(fā)送包竹,光標位置會“不在原位”,上移籍凝。如下圖箭頭所指:
光標正常情況應(yīng)該是這樣的:
造成這個問題的原因周瞎?
textView 繼承 scrollView 有一個 contentSize 屬性,我們根據(jù)此屬性獲取 textview 的高度饵蒂。
本來 textView 的 ContentOffset 和contentSize是在一個位置上的声诸,ContentOffset.Y 為0, contentSize 也為(0,0) 退盯,這里為了演示清楚將兩張分開顯示彼乌,其實圖應(yīng)該重疊。
但是當文字內(nèi)容輸入很多后渊迁,文字會“上移”慰照,contentSize 向上走了,Y 值會變大琉朽,然后 ContentOffset.Y > 0,所以按發(fā)送后焚挠,光標位置會向上偏移,造成這個情況漓骚。
解決方案
在 textView 代理方法中添加下面兩句代碼就能搞定蝌衔!
-(void)textViewDidChange:(UITextView *)textView{
[textView setContentOffset:CGPointZero animated:YES];
[textView scrollRangeToVisible:textView.selectedRange];
}