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
