ios - 动态 UITextView 错位行为

标签 ios swift chat uitextviewdelegate

我正在尝试使用类似于 iPhone 消息的 TextView ,其中 TextView 最初具有约束(高度 <= 100)并且 scrollEnabled = false

这是项目的链接: https://github.com/akawther/TextView

TextView 根据内容大小增加高度,如左图所示,直到达到 100 的高度,然后将 scrollEnabled 设置为 true。在我单击右下角的“发送”按钮之前,它工作正常,其中 textView 应该变为空并返回到原始高度并且 scrollEnabled 变为 false。中间的图像显示了单击按钮时发生的情况。当我开始打字时,textview 会向下移动,如您在右侧最后一张图片中所见。 我希望能够单击按钮并消除中间图像上显示的行为,我该如何解决这个问题?

enter image description here

import UIKit

class ViewController: UIViewController, UITextViewDelegate {

@IBOutlet weak var bottomConstraint: NSLayoutConstraint!
@IBOutlet weak var messageTextView: UITextView!
@IBOutlet weak var parent: UIView!
let messageTextViewMaxHeight: CGFloat = 100


override func viewDidLoad() {
    super.viewDidLoad()

    self.messageTextView.delegate = self
}

@IBAction func Reset(sender: AnyObject) {
    messageTextView.text = ""
    messageTextView.frame.size.height = messageTextView.contentSize.height
    messageTextView.scrollEnabled = false
    self.parent.layoutIfNeeded()
}

func textViewDidChange(textView: UITextView) {
    if textView.frame.size.height >= self.messageTextViewMaxHeight {

        textView.scrollEnabled = true

    } else {
        textView.scrollEnabled = false
        textView.frame.size.height = textView.contentSize.height
    }
}

}

您可以在 github 项目中按照以下步骤复制我的问题: 1. 继续输入单词并按回车键,直到您开始看到滚动条 2.点击按钮你会看到textview变成了蓝色 容器。这就是我要消除的问题!

最佳答案

试试下面的代码:-

@IBAction func Reset(sender: AnyObject) {
        messageTextView.scrollEnabled = false
        messageTextView.text = ""
        messageTextView.frame.size.height = messageTextView.contentSize.height
        parent.frame.size.height = 20

    self.view.layoutIfNeeded()
}

func textViewDidChange(textView: UITextView) {
    if textView.contentSize.height >= self.messageTextViewMaxHeight {

        textView.scrollEnabled = true

    } else {

        textView.frame.size.height = textView.contentSize.height
        textView.scrollEnabled = false
    }
}

关于ios - 动态 UITextView 错位行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38470967/

相关文章:

ios - 是否可以在发布前重新提交应用程序?

swift - Cocoapods:确定 pod 版本

java - Jetty Websocket,关闭 session OpCode 12

java - Android - Firebase - 将用户发送到聊天室

ios - 是否可以禁用 CATransition 的背景淡入淡出?

ios - 在 Swift 中记录行号和方法名

ios - QuickBlox v2.6 Facebook 登录问题

swift - 使用 NSFetchedResultsController 对描述符进行排序 - Swift

ios - 崩溃 : "Thread 1: EXC_BAD_ACCESS"?

c - C - IP 中的 UDP 聊天应用程序打印为 0.0.0.0