14280


Swift2でキーボードを作った場合、どうしたらキーボードを非表示にできますか？

キーボードに非表示ボタン作って、それを押下して、キーボードを隠したいのです。

よろしくお願いいたします。

[code]

    override func viewDidLoad() { 
        super.viewDidLoad() 
    
        let flowLayout = UICollectionViewFlowLayout() 
    
        let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "DismissKeyboard") 
        view.addGestureRecognizer(tap) 
    
    
        bunPrint() 
        btnTitle1() 
        fFastBoot = false 
    
    }
    
    ・・・
    
    func btnDown56(sender: UIButton){
        fDub = false
        self.button56.backgroundColor = UIColor.blackColor()
        let proxy = textDocumentProxy
        proxy.insertText("")
        SiftCange()
    }
    func btnUp56(sender: UIButton){
        self.button56.backgroundColor = UIColor.whiteColor()
    }
    
[/code]


CC BY-SA 3.0
2015-08-10T21:24:00.207
14249
2015-10-16T16:08:12.970
2015-10-16T16:08:12.970
5519
10845
question
swift
Swift2で絵文字キーボードを作って、非表示ボタンで非表示にしたいがどうしたらいいか？


`UIInputViewController`を継承したカスタムキーボード側から閉じたいということであれば、`dismissKeyboard()`を呼ぶだけです。

[UIInputViewControllerのリファレンス](https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UIInputViewController_Class/)の冒頭に書いてあります。

* * *

補足。通常のアプリケーションからキーボードを閉じる場合は`resignFirstResponder()`を使いますが、カスタムキーボードでは違う操作になります。

これがなぜかというと、ファーストレスポンダ（現在入力対象となっている`UITextView`など）を管理しているのが、アプリケーションのキーウインドウとなっている`UIWindow`だからです。

エクステンションのキーボードは、ホストアプリケーションへ直接アクセスすることはできないので、ファーストレスポンダへメッセージを送ることができないのです。表示される領域も`UITextEffectWindow`という通常のビュー階層が属しているのとは別のウインドウとなっています。


CC BY-SA 3.0
2015-08-11T11:08:51.063
14280
2015-08-12T13:41:49.357
2015-08-12T13:41:49.357
5337
5337
14249
answer