@@ -10,10 +10,15 @@ import UIKit
10import Cartography
10import Cartography
11import Marklight
11import Marklight
12import TinyConstraints
12import TinyConstraints
14class NewPostViewController: UIViewController, UITextViewDelegate {
15class NewPostViewController: UIViewController, UITextViewDelegate {
16 @IBOutlet weak var view1: UIView!
17 @IBOutlet weak var view1: UIView!
19+ @IBOutlet weak var viewForTags: UIView!
21+ fileprivate let tagsField = WSTagsField()
17 // Keep strong instance of the `NSTextStorage` subclass
22 // Keep strong instance of the `NSTextStorage` subclass
18 let textStorage = MarklightTextStorage()
23 let textStorage = MarklightTextStorage()
@@ -51,8 +56,38 @@ class NewPostViewController: UIViewController, UITextViewDelegate {
52 setUpTextView()
57 setUpTextView()
53 setUpAccessoryView()
58 setUpAccessoryView()
62+ func setUpTagsView(){
63+ tagsField.frame = viewForTags.bounds
64+ viewForTags.addSubview(tagsField)
66+ // tagsField.translatesAutoresizingMaskIntoConstraints = false
67+ // tagsField.heightAnchor.constraint(lessThanOrEqualToConstant: 150).isActive = true
69+ tagsField.cornerRadius = 3.0
70+ tagsField.spaceBetweenLines = 10
71+ tagsField.spaceBetweenTags = 10
73+ //tagsField.numberOfLines = 3
74+ //tagsField.maxHeight = 100.0
76+ tagsField.layoutMargins = UIEdgeInsets(top: 2, left: 6, bottom: 2, right: 6)
77+ tagsField.contentInset = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10) //old padding
79+ tagsField.placeholder = "Enter a tag"
80+ tagsField.placeholderColor = #colorLiteral(red: 0.2392156869, green: 0.6745098233, blue: 0.9686274529, alpha: 1)
81+ tagsField.placeholderAlwaysVisible = true
82+ tagsField.backgroundColor = #colorLiteral(red: 0.937254902, green: 0.937254902, blue: 0.9568627451, alpha: 1)
83+ tagsField.returnKeyType = .next
84+ tagsField.delimiter = ""
86+ tagsField.textDelegate = self
87+ tagsField.acceptTagOption = .space
57 override func viewWillAppear(_ animated: Bool) {
92 override func viewWillAppear(_ animated: Bool) {
58 super.viewWillAppear(animated)
93 super.viewWillAppear(animated)
@@ -151,23 +186,7 @@ class NewPostViewController: UIViewController, UITextViewDelegate {
152 @objc func addMathBrackets()
187 @objc func addMathBrackets()
154− if textView.text.count != 0 && textView.text.last != "\n" {
189+ // nothing
155− textView.insertText("\n\\[\n ")
158− textView.insertText("\\[\n ")
161− if let selectedRange = textView.selectedTextRange
163− textView.insertText("\n\\]\n")
165− if let newPosition = textView.position(from: selectedRange.start, offset: 0)
167− // set the new position
168− textView.selectedTextRange = textView.textRange(from: newPosition, to: newPosition)
173 func setUpMD(){
192 func setUpMD(){
@@ -193,7 +212,7 @@ class NewPostViewController: UIViewController, UITextViewDelegate {
193 var indexOfPost = 0
212 var indexOfPost = 0
194 // MARK:- new post
213 // MARK:- new post
195 @objc func newPost(){
214 @objc func newPost(){
196− Model.createAndPublish(body: [ Model.Attachments(markdown: textView!.text) ], tags: ["ПИ", "люблюСвоюРаботу", "работаРулит", "Шершаков"])
215+ Model.createAndPublish(body: [Model.Attachments(markdown: textView!.text)], tags: tagsField.tags.map { $0.text })
197 // adding row to uiTableView after adding new post
216 // adding row to uiTableView after adding new post
198 // myProtocol?.addPost(post: p)
217 // myProtocol?.addPost(post: p)
199 moveBackToParentVC()
218 moveBackToParentVC()
@@ -255,4 +274,42 @@ class NewPostViewController: UIViewController, UITextViewDelegate {
255 rect.size.height = rect.size.height + textView.textContainerInset.bottom
274 rect.size.height = rect.size.height + textView.textContainerInset.bottom
256 textView.scrollRectToVisible(rect, animated: animated)
275 textView.scrollRectToVisible(rect, animated: animated)
278+ fileprivate func textFieldEvents() {
279+ tagsField.onDidAddTag = { _, _ in
280+ print("onDidAddTag")
283+ tagsField.onDidRemoveTag = { _, _ in
284+ print("onDidRemoveTag")
287+ tagsField.onDidChangeText = { _, text in
288+ print("onDidChangeText")
291+ tagsField.onDidChangeHeightTo = { _, height in
292+ print("HeightTo \(height)")
295+ tagsField.onDidSelectTagView = { _, tagView in
296+ print("Select \(tagView)")
299+ tagsField.onDidUnselectTagView = { _, tagView in
300+ print("Unselect \(tagView)")
306+extension NewPostViewController: UITextFieldDelegate {
308+ func textFieldShouldReturn(_ textField: UITextField) -> Bool {
309+ if textField == tagsField {