2010-04-05 72 views
6

默認情況下,UITextView的contentView在基於高度的文本視圖中包含太多文本以適應文本視圖時變爲可滾動。UITextView更改高度而不是滾動

我想禁用它,而是更新UITextView的高度以適應文本。我這樣做的原因是因爲我添加UITextView作爲應該處理滾動的UIScrollView的子視圖,就像在本地郵件應用程序中一樣(當您輸入文本時,整個視圖向上滾動,而不僅僅是文本視圖。

人有一些想法/已

回答

20

它這樣很簡單地完成之前遇到了同樣的問題:?

CGRect frame = textView.frame; 

frame.size = textView.contentSize; 

textView.frame = frame; 

這應該設置TextView的高度適當地適用於所有的其內容

+0

這是偉大的。由於評論格式不同,我不得不添加一些內容到新的答案中。 – 2010-04-06 15:21:29

+0

這適用於iOS5,但由於iOS4上的某些原因,光標始終想要漂移到視圖的邊界之外。 – 2012-04-29 03:19:52

+0

謝謝你,省了我很多時間! – Mateus 2012-11-30 23:38:44

9

很少l改變:

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

    CGFloat fontHeight = (textView.font.ascender - textView.font.descender) + 1; 

    CGRect newTextFrame = textView.frame; 
    newTextFrame.size = textView.contentSize; 
    newTextFrame.size.height = newTextFrame.size.height + fontHeight; 
    textView.frame = newTextFrame; 
} 

添加字體高度給自動更正框留出空間,當您拼寫錯誤的東西時。

UITextView也應設置爲不滾動:

[aTextView setScrollEnabled:NO]; 
+0

這個句柄如何將視圖滾動到光標? – 2011-09-02 19:44:43

+0

這應該是被接受的答案。 – 2012-04-01 02:02:53

+0

你也可以設置textView.clipsToBounds = NO;使自動更正框不被剪切。 – 2012-04-29 03:17:38