未分類

キーボードで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も上げる方法

-未分類

執筆者:

関連記事

PremierePro プロジェクトパネルの小窓を消す

左上にあるプレビューを表示する小窓を消す方法。 プロジェクトパネルのタブの3本線→「プレビューエリア」のチェックを外す。

六角形とパスでモーショングラフィクスを作る

六角形のシェイプ と、パスで描いた線を使ってモーショングラフィクスを作る。 六角形は回転しながら外半径を大きくする。 線のパスは「追加」→「パスのトリミング」→「開始点」「終了点」を調整して、動きをつ …

no image

UIColorをRGBで指定する

label.textColor = UIColor(displayP3Red: 255/255, green: 126/255, blue: 121/255, alpha: 1) 参考:https:/ …

no image

collectionViewでセルが選択された時に色を変える

collectionViewでセルが選択された時にハイライトをつける関数。 collectionView(_:shouldHighlightItemAt:) デフォルトでtrueとなっているので、これ …

読み込んだイラストの位置・スケールを直接変える方法

クリップ選択後、「モーション」をクリックするとイラストの周りに青枠が出て直接拡縮したり移動できる。 エフェクトコントロールの位置・スケールで動かすより楽。