A SlackTextViewController replacement written in Swift for the iPhone X.
See the code
Just add MessageViewController to your Podfile and install. Done!
pod 'MessageViewController'
You must subclass MessageViewController.
import MessageViewController
class ViewController: MessageViewController {
// ...
}
Finish setup using a UIScrollView. Remember this can also be a UITableView or UICollectionView.
func viewDidLoad() {
super.viewDidLoad()
setup(scrollView: scrollView)
}
You can customize any part of the UI that you want!
// Border between the text view and the scroll view
borderColor = .lightGray
// Change the appearance of the text view and its content
messageView.inset = UIEdgeInsets(top: 8, left: 16, bottom: 8, right: 16)
messageView.textView.placeholderText = "New message..."
messageView.textView.placeholderTextColor = .lightGray
messageView.font = .systemFont(ofSize: 17)
// Setup the button using text or an icon
messageView.set(buttonTitle: "Send", for: .normal)
messageView.addButton(target: self, action: #selector(onButton))
messageView.buttonTint = .blue
// Set custom attributes for an autocompleted string
let tintColor = .blue
messageAutocompleteController.autocompleteTextAttributes = ["@": [.font: UIFont.preferredFont(forTextStyle: .body), .foregroundColor: tintColor, .backgroundColor: tintColor.withAlphaComponent(0.1)]]
The base view controller uses a MessageAutocompleteController control to handle text autocompletion.
This control uses a plain UITableView to display its autocomplete. Add a dataSource and delegate to display and handle interactions.
let tableView = messageAutocompleteController.tableView
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
tableView.dataSource = self
tableView.delegate = self
Then register for autocomplete prefixes you want to respond to and set a delegate to handle when a prefix is found.
messageAutocompleteController.register(prefix: "@")
messageAutocompleteController.delegate = self
Your delegate needs to implement just one method.
func didFind(controller: MessageAutocompleteController, prefix: String, word: String) {
// filter your data
controller.show(true)
}
Note: You can perform asyncronous autocomplete searches. Just be sure to call
messageAutocompleteController.show()when finished.
1,030 followers · starred Feb 2018
1,573 followers · starred Jan 2018
52 followers · starred Jan 2018
748 followers · starred Jan 2018
A SlackTextViewController replacement written in Swift for the iPhone X.
See the code
Just add MessageViewController to your Podfile and install. Done!
pod 'MessageViewController'
You must subclass MessageViewController.
import MessageViewController
class ViewController: MessageViewController {
// ...
}
Finish setup using a UIScrollView. Remember this can also be a UITableView or UICollectionView.
func viewDidLoad() {
super.viewDidLoad()
setup(scrollView: scrollView)
}
You can customize any part of the UI that you want!
// Border between the text view and the scroll view
borderColor = .lightGray
// Change the appearance of the text view and its content
messageView.inset = UIEdgeInsets(top: 8, left: 16, bottom: 8, right: 16)
messageView.textView.placeholderText = "New message..."
messageView.textView.placeholderTextColor = .lightGray
messageView.font = .systemFont(ofSize: 17)
// Setup the button using text or an icon
messageView.set(buttonTitle: "Send", for: .normal)
messageView.addButton(target: self, action: #selector(onButton))
messageView.buttonTint = .blue
// Set custom attributes for an autocompleted string
let tintColor = .blue
messageAutocompleteController.autocompleteTextAttributes = ["@": [.font: UIFont.preferredFont(forTextStyle: .body), .foregroundColor: tintColor, .backgroundColor: tintColor.withAlphaComponent(0.1)]]
The base view controller uses a MessageAutocompleteController control to handle text autocompletion.
This control uses a plain UITableView to display its autocomplete. Add a dataSource and delegate to display and handle interactions.
let tableView = messageAutocompleteController.tableView
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
tableView.dataSource = self
tableView.delegate = self
Then register for autocomplete prefixes you want to respond to and set a delegate to handle when a prefix is found.
messageAutocompleteController.register(prefix: "@")
messageAutocompleteController.delegate = self
Your delegate needs to implement just one method.
func didFind(controller: MessageAutocompleteController, prefix: String, word: String) {
// filter your data
controller.show(true)
}
Note: You can perform asyncronous autocomplete searches. Just be sure to call
messageAutocompleteController.show()when finished.
1,030 followers · starred Feb 2018
1,573 followers · starred Jan 2018
52 followers · starred Jan 2018
748 followers · starred Jan 2018