Skip to content

A SlackTextViewController replacement written in Swift for the iPhone X.

License

Notifications You must be signed in to change notification settings

GitHawkApp/MessageViewController

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.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 13