GitHub - GitHawkApp/MessageViewController: A SlackTextViewController replacement...
source link: https://github.com/GitHawkApp/MessageViewController
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Installation
Just add MessageViewController
to your Podfile and install. Done!
pod 'MessageViewController'
Setup
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) }
Customizations
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)]]
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.
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.
Acknowledgements
- Heavy inspiration from SlackTextViewController
- Created with ❤️ by Ryan Nystrom
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK