Blog

Swift UITextFieldがキーボードに隠れないようにする方法(ライブラリ使用)

SwiftでTextFeildを入力するときに、下から出てきたキーボードで入力が見えなくなることはよくあります。
検索してみましたが、どれも、自力で実装するものばかりで、便利なライブラリを見つけたのでご紹介します。

実現したいこと

f:id:happy_teeth_ago:20200123130556g:plain

ライブラリ TPKeyboardAvoidingを利用する

公式サイトはこちら

podファイルに記載する

pod 'TPKeyboardAvoiding'

pod installを実行

$ pod install

Analyzing dependencies
Downloading dependencies
Installing TPKeyboardAvoiding (1.3.3)
Generating Pods project
Integrating client project

注意! podをインストールした後は、xcworkspaceアイコンから起動すること

StoryBoardにてViewの設定

まずスクロールビューを配置
そこに先程のライブラリのクラスを適用します。

その配下にViewを配置します。

構造はこんなイメージです。
KeyboardAvoidingScrollViewが、ScrollViewです。表示名が変わります。
SecondViewがViewになります。

ScrollViewから、最上位のViewへのconstraints

上下左右を0に設定

このときにエラーが出ますが、安心してください。
後続の作業をすると、赤いエラーは消えます。

SecondViewから、KeyboardAvoidingScrollViewへのconstraints

4方向0を設定 + Align Center X,Y を設定

secondViewからCTR を押しながら、KeyboardAvoidingScrollViewへ ドラッグします。
そして選択します。

ポイント textFieldのdelegateをコントローラーへ接続

コードの記載

基本、このライブラリがTextFieldのinput開始イベントを拾ってくれるので、
リターンキーを押されたときの処理だけ記載しておく。

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var yourNameTF: UITextField!
    
    override func viewDidLoad() {
        super.viewDidLoad()
       
    }
  
}

extension ViewController: UITextFieldDelegate{
//リターンキーでテキストフィールドを閉じる
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        textField.resignFirstResponder()
        return true
    }
}

 

このライブラリは、簡単に実装できておすすめです。

またクラスを適用すれば、どの画面でも利用できるので、コード量を減らせます。


一つ前の記事 Swift クロージャーについて
次の記事 Swift Firebase サブコレクションを生成