在UITextView中寫入的文本多於完全適合其內容的文本時,文本將向上滾動,光標通常會將自己置於視圖底線上方一行或兩行。這有點令人沮喪,因爲我希望我的應用程序充分利用文本視圖的整個高度。UITextView自動滾動到最後一行
基本上我想要的是配置UITextView寫入它的最低部分,而不是僅用於滾動。
我看到一些類似的問題here,here和here。不過,我還沒有看到適當的解決方案。
感謝
在UITextView中寫入的文本多於完全適合其內容的文本時,文本將向上滾動,光標通常會將自己置於視圖底線上方一行或兩行。這有點令人沮喪,因爲我希望我的應用程序充分利用文本視圖的整個高度。UITextView自動滾動到最後一行
基本上我想要的是配置UITextView寫入它的最低部分,而不是僅用於滾動。
我看到一些類似的問題here,here和here。不過,我還沒有看到適當的解決方案。
感謝
我有一個稍微不同的實現(我想禁用滾動),但我也不得不停止光標跳出我的UITextView。爲此,我在UITextView子類中實現了一個空scrollRectToVisible。就像這樣:
- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated
{
// do nothing. This fixes the cursor jumping above the field defect.
}
如果我理解正確的,你可以使用
[textView setScrollEnabled:NO];
禁用滾動。鍵入有關不算什麼,當光標到達下緣...也許這不是很好的解決辦法,但你可以在
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
添加一些閾值(在[textView text]
最大字符),並返回NO UITextView的委託方法,如果[[textView text] length] > maxCharacters
。
也許我不清楚。我仍然希望視圖可以滾動。但我也希望能夠在整個高度上書寫文字。這是默認情況下通常不可能的事情,因爲當你點擊最後一行但最少的行時,文本將開始彈起(我可以通過向下滾動文本來告訴UITextView擴展到該行的下面)。 – 2009-11-27 19:33:03
我覺得似乎財產 'contentOffset',也可以使用...
優秀的解決方案是在子類中的UITextView添加行
-(void) setContentOffset:(CGPoint)contentOffset {
[self setContentInset:UIEdgeInsetsZero];
[super setContentOffset:contentOffset];
}
它的工作!
它的工作原理!謝謝Zeine。 – Seunghoon 2011-04-16 22:03:56
使用本
NSRange myRange=NSMakeRange(outPutTextView.text.length, 0);
[outPutTextView scrollRangeToVisible:myRange];
我得通過SETFRAME的最後一行:
textView:shouldChangeTextInRange:replacementText:
,使用scrollRangeToVisible:
,參數是selectedRange
這是一個很好的提示。我可以重新實現這個方法,使文本視圖自動滾動完全按照我需要的方式。 – 2009-12-17 14:46:15