Skip to content
This repository was archived by the owner on Apr 28, 2023. It is now read-only.

Repository files navigation

Installation

Just add MessageViewController to your Podfile and install. Done!

pod'MessageViewController'

Setup

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)}

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
lettintColor=.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.

lettableView= 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

About

A SlackTextViewController replacement written in Swift for the iPhone X.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages