未分類

キーボードでtextFieldが隠れないようにする

投稿日:

画面下にtextFieldやtextViewを配置すると、キーボード出現時に隠れてしまうことがある。
キーボード出現と一緒に、textFieldの位置を上げることで解決。

キーボード出現時にtextFieldを上げる方法

UIResponderのkeyboardWillShowとkeyboardWillHideを使い、キーボード出現時とキーボードが隠れた時にviewの高さを変える。

NotificationCenterで検知する。

import UIKit

class ViewController: UIViewController, UITextFieldDelegate {
    
    @IBOutlet weak var textField: UITextField!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        //デリゲート
        textField.delegate = self
        
        //キーボードが出現を検知して、行う処理を指定
        NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: UIResponder.keyboardWillChangeFrameNotification, object: nil)
        //キーボードが閉じたのを検知して、行う処理を指定
        NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil)
    }
    
    
    //キーボードのframeに変化がある時に呼ばれるメソッド
    @objc func keyboardWillShow(notification: NSNotification) {
        
        if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {
            
            //キーボドが初めて出てきた時(viewが初期位置)
            if self.view.frame.origin.y == 0 {
                
                //キーボードの高さ分viewを上に移動する
                self.view.frame.origin.y -= keyboardSize.height
                
            } else {//キーボードはすでに出ている時(viewがキーボード分上がっている)
                
                //予測変換部分の高さ分viewを上に移動する
                let suggestionHeight = self.view.frame.origin.y + keyboardSize.height
                self.view.frame.origin.y -= suggestionHeight
                
            }
        }
    }
    
    //キーボードが隠れた時に呼ばれるメソッド
    @objc func keyboardWillHide() {
        //viewが初期位置でない場合、0に戻す
        if self.view.frame.origin.y != 0 {
            self.view.frame.origin.y = 0
        }
    }
    
    //return押下でキーボードを閉じる
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        self.view.endEditing(true)
        return false
    }
    
}

参考:【Swift】キーボードと一緒にViewも上げる方法

-未分類

執筆者:

関連記事

no image

デリゲートの基本

他クラスのデリゲートメソッドを自分のクラスで使うにはデリゲートを使う。 1.宣言する(プロトコルを追加する) 2.デリゲートをselfに設定する 3.デリゲートメソッドを書く —&#821 …

no image

UserDefaultsの基本的な使い方

import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoa …

描画モードの使い分け

描画モード(合成モード)の大まかな使い分け グレー線で大まかに区切られている。 上から、 通常:上からベタ置き 比較(暗)グループ:暗く合成される 加算グループ:明るく合成される オーバーレイグループ …

no image

after effectsの基本的な時短ワザ

エフェクト&プリセットを使う 右メニューにあるパネル。 複数選択してドラックアンドドロップで持っていくとまとめてつけられる。 調整レイヤー 調整レイヤーより下にあるレイヤーすべてに効果をかける …

シーケンスに動画の音が入らない時の対処法

オーディオのパッチをオンにする。 参考:Premiere Proでシーケンスに音が入らない時の対処方法〜むしろソースパッチを活用せよ〜