【iOS】オリジナルのキーボードを作ってみる

↓こちらのサイトを参考にして、オリジナルのキーボードを作ってみました。

qiita.com

テキスト入力エリアをタップすると、オリジナルのキーボードが出てきました。

ボタンを押すと、テキストが追加されます。

「Next」ボタンを押すと、別のキーボードに遷移します。

import UIKit

class KeyboardViewController: UIInputViewController {

    @IBOutlet var nextKeyboardButton: UIButton!
    @IBOutlet var button1Button: UIButton!
    @IBOutlet var button2Button: UIButton!
    @IBOutlet var button3Button: UIButton!

    override func updateViewConstraints() {
        super.updateViewConstraints()
        
        // Add custom view sizing constraints here
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let v = UINib(nibName:"KeyboardViewController", bundle:nil).instantiate(withOwner: self,options:nil)[0] as! UIView
        self.inputView!.addSubview(v)
    }
    
    override func viewWillLayoutSubviews() {
        self.nextKeyboardButton.isHidden = !self.needsInputModeSwitchKey
        super.viewWillLayoutSubviews()
    }
    
    override func textWillChange(_ textInput: UITextInput?) {
        // The app is about to change the document's contents. Perform any preparation here.
    }
    
    override func textDidChange(_ textInput: UITextInput?) {
        // The app has just changed the document's contents, the document context has been updated.
        
        var textColor: UIColor
        let proxy = self.textDocumentProxy
        if proxy.keyboardAppearance == UIKeyboardAppearance.dark {
            textColor = UIColor.white
        } else {
            textColor = UIColor.black
        }
        self.nextKeyboardButton.setTitleColor(textColor, for: [])
    }

    @IBAction func buttonNext(sender: AnyObject) {
        self.advanceToNextInputMode()
    }
    
    @IBAction func button1(sender: AnyObject) {
        let proxy = textDocumentProxy as UITextDocumentProxy
        proxy.insertText("Button1")
    }
    
    @IBAction func button2(sender: AnyObject) {
        let proxy = textDocumentProxy as UITextDocumentProxy
        proxy.insertText("Button2")
    }

    @IBAction func button3(sender: AnyObject) {
        let proxy = textDocumentProxy as UITextDocumentProxy
        proxy.insertText("Button3")
    }

}