@@ -10,10 +10,15 @@ import UIKit
1010import Cartography
1111import Marklight
1212import TinyConstraints
13+import WSTagsField
1314
1415class NewPostViewController: UIViewController, UITextViewDelegate {
1516
1617 @IBOutlet weak var view1: UIView!
18+
19+ @IBOutlet weak var viewForTags: UIView!
20+
21+ fileprivate let tagsField = WSTagsField()
1722 // Keep strong instance of the `NSTextStorage` subclass
1823 let textStorage = MarklightTextStorage()
1924
@@ -51,8 +56,38 @@ class NewPostViewController: UIViewController, UITextViewDelegate {
5156 setUpMD()
5257 setUpTextView()
5358 setUpAccessoryView()
59+ setUpTagsView()
5460 }
5561
62+ func setUpTagsView(){
63+ tagsField.frame = viewForTags.bounds
64+ viewForTags.addSubview(tagsField)
65+
66+ // tagsField.translatesAutoresizingMaskIntoConstraints = false
67+ // tagsField.heightAnchor.constraint(lessThanOrEqualToConstant: 150).isActive = true
68+
69+ tagsField.cornerRadius = 3.0
70+ tagsField.spaceBetweenLines = 10
71+ tagsField.spaceBetweenTags = 10
72+
73+ //tagsField.numberOfLines = 3
74+ //tagsField.maxHeight = 100.0
75+
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
78+
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 = ""
85+
86+ tagsField.textDelegate = self
87+ tagsField.acceptTagOption = .space
88+
89+ textFieldEvents()
90+ }
5691
5792 override func viewWillAppear(_ animated: Bool) {
5893 super.viewWillAppear(animated)
@@ -151,23 +186,7 @@ class NewPostViewController: UIViewController, UITextViewDelegate {
151186
152187 @objc func addMathBrackets()
153188 {
154− if textView.text.count != 0 && textView.text.last != "\n" {
155− textView.insertText("\n\\[\n ")
156− }
157− else {
158− textView.insertText("\\[\n ")
159− }
160−
161− if let selectedRange = textView.selectedTextRange
162− {
163− textView.insertText("\n\\]\n")
164−
165− if let newPosition = textView.position(from: selectedRange.start, offset: 0)
166− {
167− // set the new position
168− textView.selectedTextRange = textView.textRange(from: newPosition, to: newPosition)
169− }
170− }
189+ // nothing
171190 }
172191
173192 func setUpMD(){
@@ -193,7 +212,7 @@ class NewPostViewController: UIViewController, UITextViewDelegate {
193212 var indexOfPost = 0
194213 // MARK:- new post
195214 @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 })
197216 // adding row to uiTableView after adding new post
198217 // myProtocol?.addPost(post: p)
199218 moveBackToParentVC()
@@ -255,4 +274,42 @@ class NewPostViewController: UIViewController, UITextViewDelegate {
255274 rect.size.height = rect.size.height + textView.textContainerInset.bottom
256275 textView.scrollRectToVisible(rect, animated: animated)
257276 }
277+
278+ fileprivate func textFieldEvents() {
279+ tagsField.onDidAddTag = { _, _ in
280+ print("onDidAddTag")
281+ }
282+
283+ tagsField.onDidRemoveTag = { _, _ in
284+ print("onDidRemoveTag")
285+ }
286+
287+ tagsField.onDidChangeText = { _, text in
288+ print("onDidChangeText")
289+ }
290+
291+ tagsField.onDidChangeHeightTo = { _, height in
292+ print("HeightTo \(height)")
293+ }
294+
295+ tagsField.onDidSelectTagView = { _, tagView in
296+ print("Select \(tagView)")
297+ }
298+
299+ tagsField.onDidUnselectTagView = { _, tagView in
300+ print("Unselect \(tagView)")
301+ }
302+ }
303+}
304+
305+
306+extension NewPostViewController: UITextFieldDelegate {
307+
308+ func textFieldShouldReturn(_ textField: UITextField) -> Bool {
309+ if textField == tagsField {
310+ // hz
311+ }
312+ return true
313+ }
314+
258315}