2016-07-04 8 views
1

静的なUItableViewがあり、そのセルの1つにテキストビューが含まれていて、テキストビューを自動生成可能にして、同時にセルを拡大したい場合。常にテキストを切り取る代わりに折り返します。UITableViewセル内でUITextViewを自動繁殖

isoaltedのテキストビューでは、私は固定サイズと長いテキストを表示するためにこの問題に直面しません。私はtextviewの中でスクロールしていますが、この場合はスクロールしたくありません。私のUITextViewはnonScrolable親(UITableView)には既にスクロールがあり、ネストされたスクロールを避けたいからです。

これを整理する私のアプローチは、overrayde height ....です。ユーザがsizeThatFits(size:CGSize)を使用して入力するたびに私のビューを再ロードして、requeridのサイズを知り、UITextViewのセルサイズを設定し、テキストが正しく表示されます。

しかし、セルはちょっとしか成長しませんし、十分ではありません。私が理解しているかどうかを知るためにsizeThatFitsについて調べました。オブジェクトのmesureを取得して別のオブジェクトに収める方法や、パディング、マージン、または制約のようなものを気にして、私はそれらのことが説明されている場所を見つけることができません。

私はこの質問を持っています、 私はこの方法を忘れましたか?どのように私はそれを使用するshoud? 私の目標に達する正しい道はありますか?それとももっと良い方法がありますか?

ありがとうございました。

override func tableView(tableView: UITableView, 
       heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 

    let defaulHeight: CGFloat = 44 

    if indexPath.row == textFieldRowNumber { 
     let cellSize = messageTableViewCell.bounds.size 
     let wantedSize = longMessageTextField.sizeThatFits(cellSize) 
      return wantedSize.height 
    } else { 
     return defaulHeight 
    } 
} 


func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool { 
    textView.resignFirstResponder() 
    let previousMessageInput = longMessageTextField.text 
    longMessageTextField.text = previousMessageInput! + text 

    let indexToReload = NSIndexPath(forItem: 4, inSection: 0) 
    self.tableView.reloadRowsAtIndexPaths([indexToReload], withRowAnimation: UITableViewRowAnimation.Top)   
    return true 
} 

答えて

0

sizeThatFitsを呼び出すのではなく、textViewのcontentSizeプロパティを試しましたか?

関連する問題