Files
lockdown-iOS-mirror/LockdowniOS/Scenes/Questionnaire/Views/TextViewWithPlaceholder.swift

68 lines
2.0 KiB
Swift

//
// TextViewWithPlaceholder.swift
// Lockdown
//
// Created by Pavel Vilbik on 23.06.23.
// Copyright © 2023 Confirmed Inc. All rights reserved.
//
import UIKit
class TextViewWithPlaceholder: UIView {
var textDidChanged: ((String) -> Void)?
private(set) lazy var textView: UITextView = {
let textView = UITextView()
textView.delegate = self
textView.font = .regularLockdownFont(size: 12)
textView.backgroundColor = .clear
textView.textColor = .label
textView.isScrollEnabled = false
return textView
}()
private(set) lazy var placeholderLabel: UILabel = {
let label = UILabel()
label.font = .regularLockdownFont(size: 12)
label.textColor = .secondaryLabel
label.numberOfLines = 0
return label
}()
override init(frame: CGRect) {
super.init(frame: frame)
configure()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
private func configure() {
let backgroundView = UIView()
backgroundView.backgroundColor = .tableCellBackground
backgroundView.layer.cornerRadius = 8
backgroundView.layer.borderWidth = 1
backgroundView.layer.borderColor = UIColor.secondaryLabel.cgColor
addSubview(backgroundView)
backgroundView.anchors.edges.pin(insets: .init(top: 10, left: 23, bottom: 0, right: 23))
addSubview(textView)
textView.anchors.edges.pin(insets: .init(top: 15, left: 32, bottom: 0, right: 23))
textView.anchors.height.greaterThanOrEqual(95)
addSubview(placeholderLabel)
placeholderLabel.anchors.leading.pin(inset: 36)
placeholderLabel.anchors.top.pin(inset: 18 + 5)
placeholderLabel.anchors.trailing.pin(inset: 36)
}
}
extension TextViewWithPlaceholder: UITextViewDelegate {
func textViewDidChange(_ textView: UITextView) {
placeholderLabel.isHidden = !textView.text.isEmpty
textDidChanged?(textView.text)
}
}