MessageViewController
A SlackTextViewController replacement written in Swift for the iPhone X.
Just add `MessageViewController` to your Podfile and install. Done! The project is written primarily in Swift, distributed under the MIT License license, first published in 2018. It has gained significant community traction with 1,663 stars and 91 forks on GitHub. Key topics include: githawk, ios, swift, uikit, uitextview.
Installation
Just add MessageViewController to your Podfile and install. Done!
rubypod 'MessageViewController'
Setup
You must subclass MessageViewController.
swiftimport MessageViewController class ViewController: MessageViewController { // ... }
Finish setup using a UIScrollView. Remember this can also be a UITableView or UICollectionView.
swiftfunc viewDidLoad() { super.viewDidLoad() setup(scrollView: scrollView) }
Customizations
You can customize any part of the UI that you want!
swift// 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)]]
Autocomplete
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.
swiftlet 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.
swiftmessageAutocompleteController.register(prefix: "@") messageAutocompleteController.delegate = self
Your delegate needs to implement just one method.
swiftfunc 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.
Acknowledgements
- Heavy inspiration from SlackTextViewController
- Created with ❤️ by Ryan Nystrom
Contributors
Showing top 12 contributors by commit count.
