【问题标题】:how to dynamically change textView's superview height as textView's height increases如何随着textView的高度增加动态改变textView的superview高度
【发布时间】:2015-10-08 21:11:14
【问题描述】:

我的屏幕底部有一个 textView,它是 containerView 的子视图。这是聊天应用程序的文本输入部分。我想知道如何随着文本视图大小的增加而增加 textView 的容器视图的大小。我正在使用自动布局。我使用以下 textView 委托方法来调整 textView 的大小,它似乎工作正常。但是无论我尝试什么,容器视图都不会改变大小。谢谢。

func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
    messageTextView.frame.size.height = messageTextView.contentSize.height
    return true
}

【问题讨论】:

  • 试试 messageTextView.sizeToFit()
  • 嗨。谢谢。我在上面的方法中尝试了这个,但它没有改变任何东西。
  • 当然,尝试在 sizeToFit() 之后添加 messageTextView.layoutIfNeeded()
  • 我也试过了。文本视图包含在它的超级视图中,但超级视图大小没有改变。我为消息文本视图和消息文本视图的超级视图都这样做了。两种情况都没有改变任何东西。
  • 可能是 messageTextView.superView!.frame.size...

标签: ios xcode swift textview superview


【解决方案1】:

好的。我通过简单地不将 textView 放在另一个视图中解决了这个问题。我仍然在同一位置有两个视图,但它们都只是主视图的子视图。一个都不在另一个里面。然后通过 textView 的 contentSize.height 改变每个视图的高度就可以了。

【讨论】:

    【解决方案2】:

    我有同样适用于我的功能:

    func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
    
        var height = self.noteValueLabel!.contentSize;
        textView.sizeToFit();
    
            super.frame.size.height+=textView.frame.maxY - super.frame.height + 3.0;
        }
    

    它适用于我,当 noteValueLabel 是 UITextView 而 super.frame.size 是你的 messageTextView

    【讨论】:

    • 我刚试过这个,它适用于超级视图。大小似乎按预期增加。但现在我的 textView 没有增加。我添加了上面的代码。
    • 这不起作用。 textView 大小保持固定。我想知道这是否是我在情节提要中的限制。目前我的 textview 的高度 >= 50。但它仍然保持在 50。
    • 我猜这是约束,我根本没有使用它们。不使用情节提要只会让所有事情都变得过于复杂,我猜这无济于事,抱歉(:
    • 感谢您的帮助。我会继续插电。至少你帮我增加了容器视图的大小。到了一半……
    【解决方案3】:

    以防万一有人仍在寻找答案,我通过在尺寸检查器中将 textView 的 Layout 属性设置为 Autoresizing Mask 解决了我的问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-06
      • 1970-01-01
      • 2012-08-27
      • 2016-02-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多