在UITableView单元格中自动生成UITextView

时间:2016-07-04 12:59:32

标签: ios swift uitableview

我有一个静态UItableView,其中一个单元格包含一个文本视图,它希望使文本视图可自动增长,并使单元格同时增长。始终包装文本而不是剪切文本。

在isoalted文本视图中我不会面对这个问题,因为我有固定的大小并显示长文本我只是在textview中滚动,但在这种情况下我不想滚动,因为我的UITextView被设置为nonScrolable因为父(UITableView)已经有滚动,我想避免嵌套滚动。

我对此进行排序的方法是覆盖高度....每次用户输入时使用sizeThatFits(大小:CGSize)重新加载我的视图以了解requerid大小,然后设置UITextView单元格大小,并显示文本正确。

但是细胞只是增长了一点,而且还不够,我研究了sizeThatFits以了解我是否理解它,一种方法可以让一个物体的物体适合另一个物体,或者还有其他需要注意的参数关于填充,边距或收敛,我无法找到解释这些内容的地方。

然后我有这个问题,         我错过了理解这种方法吗?我怎么用它呢?         我是否正确地实现目标?还是有更好的方法呢?

非常感谢你。

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 个答案:

没有答案