MessageViewController

A SlackTextViewController replacement written in Swift for the iPhone X.

Github星跟蹤圖

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

主要指標

概覽
名稱與所有者GitHawkApp/MessageViewController
主編程語言Swift
編程語言Ruby (語言數: 3)
平台
許可證MIT License
所有者活动
創建於2018-01-03 03:11:50
推送於2019-09-25 20:40:15
最后一次提交2019-09-25 13:40:14
發布數3
最新版本名稱0.2.1 (發布於 )
第一版名稱0.1.1 (發布於 )
用户参与
星數1.7k
關注者數29
派生數93
提交數61
已啟用問題?
問題數41
打開的問題數19
拉請求數44
打開的拉請求數5
關閉的拉請求數4
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?