越来越多的文本输入视图 - 快速的例子

时间:2015-09-17 18:44:19

标签: ios swift uitextview

我正在尝试在过去两天内实现随用户类型增长的UITextView。喜欢whats-app的确如此。

我在这里找到了带有textViewDidChange的示例,但这并没有真正起作用,因为它不仅需要增长,还需要向上移动。由于textview位于一个同时包含发送按钮的视图中,因此它们都必须向上增长。

还找到了一些其他框架。

https://github.com/slackhq/SlackTextViewController - 看起来非常酷,可能会做我需要的一切,但我发现它没有快速运行的例子。提供的示例项目我无法运行。

https://github.com/MatejBalantic/MBAutoGrowingTextView - 无法让它向上工作。

我正在寻找一些关于如何使用SWIFT实现这一点的帮助,或者是一个在swift上运行的SLACK示例项目,它不是github上的示例项目。或者可能是一些代码显示如何将UITextView链接到Slack类并使其在viewController类中工作。

3 个答案:

答案 0 :(得分:2)

这是我目前用于inputAccessoryView的内容。

我有一个工具栏,可以保存UITextView和发送按钮并监听textViewDidChange事件,如下所示:

func textViewDidChange(_ textView: UITextView) {
    let oldHeight = textView.height
    let maxHeight: CGFloat = 100.0 //beyond this value the textView will scroll
    var newHeight = min(textView.sizeThatFits(CGSize(width: textView.frame.width, height: CGFloat.greatestFiniteMagnitude)).height, maxHeight)
    newHeight = ceil(newHeight)
    if newHeight != oldHeight {
        textView.frame.size.height = max(newHeight, barHeight)
        updateHeight(height: newHeight)
    }
}

此处的目标是设置新的textView高度。然后我也更新工具栏高度

public func updateToolBarHeight(height: CGFloat) {
    for constraint in constraints {
        if constraint.firstAttribute == NSLayoutAttribute.height && constraint.firstItem as! NSObject == self {
            constraint.constant = max(barHeight, height)
        }
    }
    setNeedsUpdateConstraints()
    sendButton.origin.y = max(0, height - barHeight)
}

barHeight是我的默认工具栏高度(设置为50.0)。 我还将我的sendButton位置更新为停留在工具栏的底部。

答案 1 :(得分:1)

如果您使用的是UITextView,则只需设置以下内容即可使其适合其内容:

textView.isScrollEnabled = false

这将使其随着输入而增长。

答案 2 :(得分:-4)

要让UITextView自动增长,您需要做的就是将numberOfLines设置为0.然后它将无限增长。我希望这对你有用!