summaryrefslogtreecommitdiff
path: root/Juick/Views/MessageInputView.swift
diff options
context:
space:
mode:
Diffstat (limited to 'Juick/Views/MessageInputView.swift')
-rw-r--r--Juick/Views/MessageInputView.swift47
1 files changed, 47 insertions, 0 deletions
diff --git a/Juick/Views/MessageInputView.swift b/Juick/Views/MessageInputView.swift
new file mode 100644
index 0000000..2a923e2
--- /dev/null
+++ b/Juick/Views/MessageInputView.swift
@@ -0,0 +1,47 @@
+//
+// MessageInputView.swift
+// Juick
+//
+// Created by Vitaly Takmazov on 13.05.2023.
+// Copyright © 2023 com.juick. All rights reserved.
+//
+
+import UIKit
+
+@objc protocol MessageInputDelegate {
+ @objc func textSent(_ text: String)
+}
+
+@objc
+class MessageInputView: UIVisualEffectView, UITextViewDelegate {
+ @IBOutlet weak var bottomConstraint: NSLayoutConstraint!
+ @IBOutlet weak var textHeightConstraint: NSLayoutConstraint!
+ @IBOutlet weak var topMarginConstraint: NSLayoutConstraint!
+ @IBOutlet weak var textView: UITextView!
+ @IBOutlet weak var sendButton: UIButton!
+
+ @IBAction func sendPressed(_ sender: Any) {
+ self.delegate?.textSent(self.textView.text)
+ self.textView.text = nil
+ }
+ @objc var delegate: MessageInputDelegate?
+
+ func textSize() -> CGSize {
+ let size = CGSizeMake(self.textView.bounds.size.width, CGFloat(Float.greatestFiniteMagnitude))
+ return self.textView.sizeThatFits(size)
+ }
+
+ override var intrinsicContentSize: CGSize {
+ var viewSize = self.textSize()
+ viewSize.height = viewSize.height + self.bottomConstraint.constant + self.topMarginConstraint.constant
+ return viewSize
+ }
+
+ func textViewDidChange(_ textView: UITextView) {
+ if (self.textSize().height != self.textHeightConstraint.constant) {
+ self.textHeightConstraint.constant = self.textSize().height
+ layoutIfNeeded()
+ }
+ self.sendButton.isEnabled = self.textView.text.count > 0
+ }
+}