Just add MessageViewController to your Podfile and install. Done!
pod'MessageViewController'You must subclass MessageViewController.
import MessageViewController
classViewController: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
lettintColor=.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.
lettableView= messageAutocompleteController.tableView
tableView.register(UITableViewCell.self, forCellReuseIdentifier:"cell")
tableView.dataSource =self
tableView.delegate =selfThen 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 =selfYour 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.
- Heavy inspiration from SlackTextViewController
- Created with ❤️ by Ryan Nystrom
