2013-01-18 65 views
1

我在SO上看到了很多與此相關的問題,但是,它們都不屬於我的問題。UITextView在UITableViewCell內部生長

我要創建一個具有消息功能的應用程序。類似於蘋果公司的郵件和LinkedIn有他們的應用程序中的郵件功能,我想有一個UITableView 3行。第三行有UITextView,它必須隨用戶鍵入而增長。我的代碼如下:

- (void)textViewDidChange:(UITextView *)textView { 
    if (bodyText.contentSize.height > currentContentHeight) { 
     currentContentHeight = bodyText.contentSize.height; 

     [tblView beginUpdates]; 
     [tblView endUpdates]; 

     [bodyText setFrame:CGRectMake(0, 0, 310.0, currentContentHeight)]; 

     bodyText.selectedRange = NSMakeRange(textView.text.length - 1, 0); 

    } else { 
     currentContentHeight = minimumContentHeight; 

     [tblView beginUpdates]; 
     [tblView endUpdates]; 
    } 
} 

當我按下iPhone上的返回時,它會下降,並完美地工作。問題是,如果我轉到UITextView的中心或任何其他中間部分,它似乎會產生有趣的行爲,因爲它錯誤地得到了contentSize。例如:

  • 我按回車鍵10次
  • 轉到第五行和類型「狗」
  • 它得到contentHeight基礎上5日線,如果是有道理的?

有沒有辦法根據當前文本的全部來計算它?請讓我知道是否有任何我曾經錯過的東西。我讀了大量以下內容:

http://dennisreimann.de/blog/uitextview-height-in-uitableviewcell/

https://stackoverflow.com/questions/985394/growing-uitextview-and-uitableviewcell

UITextView inside a UITableViewCell

How do I size a UITextView to its content?

+0

是否有任何特別的原因要使用UITableView?它看起來像一個簡單的3視圖設置(自動佈局)可能會更容易/更好。 – jtbandes

+0

因爲目前的設計限制,我這樣做了。但是,這並沒有太大的區別。由於'contentHeight'計算錯誤。 – KVISH

+0

此外,UITableView使滾動到適當的行更容易等。 – KVISH

回答

2

我編輯上面的代碼下面,它的工作對我來說:

- (void)textViewDidChange:(UITextView *)textView {  
    // Get the number of lines in the current view 
    NSUInteger lines = textView.text.length; 
    if ((lines * 25) > currentContentHeight && (lines * 25) >= minimumContentHeight && bodyText.contentSize.height > minimumContentHeight) { 

     currentContentHeight = bodyText.contentSize.height; 

    } else if (lines < 5){ 
     currentContentHeight = minimumContentHeight; 
    } 

    [tblView beginUpdates]; 
    [tblView endUpdates]; 

    [bodyText setFrame:CGRectMake(5, 5, 310, currentContentHeight)]; 

    bodyText.selectedRange = [bodyText selectedRange]; 
} 

我根據手機的大小將currentContentHeight設置爲等於minimumContentHeight

相關問題