/
SymbolicKeyboard.swift
51 lines (42 loc) · 1.38 KB
/
SymbolicKeyboard.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
//
// SymbolicKeyboard.swift
// KeyboardKitDemoKeyboard
//
// Created by Daniel Saidi on 2019-05-13.
// Copyright © 2019 Daniel Saidi. All rights reserved.
//
import KeyboardKit
/**
This demo keyboard mimicks an English symbolic keyboard.
*/
struct SymbolicKeyboard: DemoKeyboard {
init(in viewController: KeyboardViewController) {
let provider = viewController.context.inputSetProvider
actions = type(of: self).actions(
for: provider.symbolicInputSet,
in: viewController)
}
let actions: KeyboardActionRows
}
private extension SymbolicKeyboard {
static func actions(
for set: SymbolicKeyboardInputSet,
in viewController: KeyboardViewController) -> KeyboardActionRows {
KeyboardActionRows(characters: set.inputRows)
.addingSideActions()
.appending(bottomActions(leftmost: switchAction, for: viewController))
}
static var switchAction: KeyboardAction {
.keyboardType(.alphabetic(.lowercased))
}
}
private extension Sequence where Iterator.Element == KeyboardActionRow {
func addingSideActions() -> [Iterator.Element] {
var actions = map { $0 }
actions[2].insert(.keyboardType(.numeric), at: 0)
actions[2].insert(.none, at: 1)
actions[2].append(.none)
actions[2].append(.backspace)
return actions
}
}