mastodon-ios/Mastodon/Scene/Compose/TableViewCell/ComposeStatusContentTableVi...

96 lines
3.4 KiB
Swift
Raw Normal View History

2021-03-11 08:41:27 +01:00
//
// ComposeStatusContentTableViewCell.swift
2021-03-11 08:41:27 +01:00
// Mastodon
//
// Created by MainasuK Cirno on 2021-3-11.
//
import UIKit
import Combine
import TwitterTextEditor
2021-03-11 08:41:27 +01:00
final class ComposeStatusContentTableViewCell: UITableViewCell {
2021-03-11 08:41:27 +01:00
var disposeBag = Set<AnyCancellable>()
2021-03-11 08:41:27 +01:00
let statusView = StatusView()
let textEditorView: TextEditorView = {
let textEditorView = TextEditorView()
textEditorView.font = .preferredFont(forTextStyle: .body)
textEditorView.scrollView.isScrollEnabled = false
textEditorView.isScrollEnabled = false
textEditorView.placeholderText = L10n.Scene.Compose.contentInputPlaceholder
textEditorView.keyboardType = .twitter
return textEditorView
}()
2021-03-11 08:41:27 +01:00
let composeContent = PassthroughSubject<String, Never>()
2021-03-11 08:41:27 +01:00
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
_init()
}
required init?(coder: NSCoder) {
super.init(coder: coder)
_init()
}
}
extension ComposeStatusContentTableViewCell {
2021-03-11 08:41:27 +01:00
private func _init() {
selectionStyle = .none
2021-03-11 08:41:27 +01:00
statusView.translatesAutoresizingMaskIntoConstraints = false
contentView.addSubview(statusView)
NSLayoutConstraint.activate([
statusView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 20),
statusView.leadingAnchor.constraint(equalTo: contentView.readableContentGuide.leadingAnchor),
statusView.trailingAnchor.constraint(equalTo: contentView.readableContentGuide.trailingAnchor),
2021-03-11 08:41:27 +01:00
])
statusView.statusContainerStackView.isHidden = true
statusView.actionToolbarContainer.isHidden = true
2021-03-16 09:17:11 +01:00
statusView.nameTrialingDotLabel.isHidden = true
statusView.dateLabel.isHidden = true
statusView.setContentHuggingPriority(.defaultHigh, for: .vertical)
statusView.setContentCompressionResistancePriority(.required - 1, for: .vertical)
textEditorView.translatesAutoresizingMaskIntoConstraints = false
contentView.addSubview(textEditorView)
NSLayoutConstraint.activate([
textEditorView.topAnchor.constraint(equalTo: statusView.bottomAnchor, constant: 10),
textEditorView.leadingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.leadingAnchor),
textEditorView.trailingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.trailingAnchor),
contentView.bottomAnchor.constraint(equalTo: textEditorView.bottomAnchor, constant: 20),
textEditorView.heightAnchor.constraint(greaterThanOrEqualToConstant: 44).priority(.defaultHigh),
])
textEditorView.setContentCompressionResistancePriority(.required - 2, for: .vertical)
// TODO:
textEditorView.changeObserver = self
}
override func didMoveToWindow() {
super.didMoveToWindow()
2021-03-11 08:41:27 +01:00
}
}
extension ComposeStatusContentTableViewCell {
}
// MARK: - UITextViewDelegate
extension ComposeStatusContentTableViewCell: TextEditorViewChangeObserver {
func textEditorView(_ textEditorView: TextEditorView, didChangeWithChangeResult changeResult: TextEditorViewChangeResult) {
guard changeResult.isTextChanged else { return }
composeContent.send(textEditorView.text)
}
}