Swift

Swift:画面をタップすることでキーボードを閉じる処理の2パターン


Swift3でキーボードをタップした際にキーボードを閉じる処理をなんと2パターン書いていこうかと思います。

 

キーボードを閉じる処理

キーボードを閉じる処理はアプリ開発をする際、

必須の機能ですよね!

入力が完了した時に閉じる処理や

ボタンをタップした時に閉じる処理などは記述し易いですが、

Viewをタップした時の処理は知らないと書きづらいですよね!

 

①touchesBeganの中に記述する

まずは簡単な方からいきます。

このように記述しましょう。

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        self.view.endEditing(true)
    }

なんとたったこれだけ!シンプルですね!

endEditing

これはおそらくresignFirstResponder的な感じで使えるものだと思ってください。

ちなみに、このように書いても動きます。(多分)

override func touchesBegan(_ touches: Set&lt;UITouch&gt;, with event: UIEvent?) {
textField.resignFirstResponder()
}

 

②ViewにaddGestureしてresignFirstResponder

これは先ほどのものよりやや難しいかもです。

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var textField: UITextField!
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let myTap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(ViewController.close(_ :))
        
        self.view.addGestureRecognizer(myTap)
        
     
    }
    func close (_ sender: UITapGestureRecognizer) {
        textField.resignFirstResponder()
    }
    
    
    
    

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        
    }
    
}

まずはcloseというキーボードを閉じる処理の関数を記述します。

ここで難しいのは引数ですね・・・

 

そしてここで、tapgestureをインスタンス化しています。

let myTap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(ViewController.close(_ :))

 

インスタンス化したmyTapをaddGestureの引数に格納することによってViewにアクションをプラスしています。

addGestureの詳しい説明はこちら!

swift3:addGestureRecognizerの使い方


ABOUT ME
ささお
3年目iOSエンジニア。 スタートアップで働いておりやす。 プログラミングスクールとエンジニアのキャリアを考えたい。 作ったアプリ - https://apps.apple.com/us/app/loverprofile/id1463563845?l=ja&ls=1