バッテラ777

ゲーム開発に関する情報を共有するブログです。記事を8192書くまでやめれません

【SwiftUI】何もないところを押したらキーボードを閉じさせる方法

SwiftUI

はじめに

今日はSwiftUIの勉強していきます。

TextFieldやTextEditorのようなキーボードが表示される場合に、キーボードが表示されたままで閉じれないことがありました。

とりあえず背景部分をタップしたらキーボード閉じるという方法がわかったので共有します。

環境

この記事の情報は次のバージョンで動作確認しています。

* MacOS Monterey (12.1)
* Xcode (13.3.1)

キーボードを閉じる処理

extensionを作る

SwiftUIデフォルト機能でないのでUIKitの力を使います。とりあえずおまじないという感じで以下をextesionで実装します

import Foundation
import UIKit

extension UIApplication {
    func closeKeyboard() {
        sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
    }
}
extensionを使う
  1. ZStackで背景領域を作る
  2. .onTapGestureモディファイアで
  3. UIApplication.shared.closeKeyboard()
var body: some View {
    ZStack {
            
        // 背景
        ZStack {
            Color.white.edgesIgnoringSafeArea(.all)
         }
         .onTapGesture {
             UIApplication.shared.closeKeyboard()
         }

おわりに

最後まで見ていただきヘペトナス!

読者登録・Twitterのフォローもお願いします。