未分類

キーボードで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

PremiereProのテキストアニメーション簡単なやつ色々

・ぼかしからぼやっと出てくる エフェクト「ブラー(ガウス)」→開始でブラー値300、10フレーム後で0 参考:https://youtu.be/pamD-YrZGuY   ・1文字ずつ出てる …

プレミアプロ講座基礎編1_エフェクト(新規作成時の設定)

新規プロジェクト作成時の設定 プロジェクトを保存する場所を指定 プロジェクトや書き出しを行った時に保存されるフォルダを指定する。 ここを指定すると、オートセーブされるデータのファイルなども全てこのファ …

プレミアプロ講座応用編1_カットとテロップ入れ

ショートカットキー 変更後の設定 カットで使うショートカット レザーツールでカットしてリップル(空白)を削除するよりショートカットを使った方が時短できる。   ・全てのクリップに一括でカット …

XMLパースで使うRSSのURLの調べ方

各サイトのRSS用URLを調べたい。 //XMLパース let urlString = “https://assets.wor.jp/rss/rdf/sankei/affairs.rdf” //←この …

ガイドの線(セーフマージン)を表示させる方法

画面右クリック→セーフマージンにチェック