Swift
iOS8

[Swift]キーボード以外をタッチするとキーボードが下がる方法

More than 3 years have passed since last update.

TextFieldを実装した際にキーボードでReturnやGoを押さない限りキーボードが下がらないのが気になり色々調べた結果一応わかったのでメモをします。


オブジェクトの配置

キーボードを出すためにTextFieldを適当に配置します。

スクリーンショット 2014-11-29 22.55.49.png

そして次に、TapGestureRecognizerを配置します。

スクリーンショット 2014-11-29 23.00.48.png

ViewControlloerに配置すると以下の画像のようになります。

スクリーンショット 2014-11-29 23.01.56.png


コードの編集

先ほどのTapGestureRecognizerをaction接続します。

ここではnameはtapScreenとします

self.view.endEditing(true)をtapScreenの中に記述します。


ViewController.swift

import UIKit

class ViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

@IBAction func tapScreen(sender: UITapGestureRecognizer) {
self.view.endEditing(true)
}

}


self.view.endEditing(true)を調べたところ

"UIView の endEditing(YES) が呼び出されることで、First Responder として編集状態になっている UITextField も endEditing:YES となり、UITextField の "Editing Did End" イベントが呼び出され、最終的に、キーボードが非表示になる感じのようです。"

と書いてありました。(http://program.station.ez-net.jp/special/handbook/objective-c/uiview/hide-keyboard.asp)

これはObjective-Cなので記述の仕方が若干変わりますが、内容としてはこんな感じだと思います。


まとめ

これでNumberPadなどReturnがないキーボードでもキーボード外をタップすればキーボードがさがるようになりました。

結構用途がありそうです。

知っている人は知っていると思いますけど、初心者はこういうことをコツコツやっていかないとダメですねw