【Swift】キーボードの表示/非表示を検知する方法!UIResponder
この記事からわかること
- Swiftでキーボードが表示/非表示になったことを検知する方法
- UIResponderのkeyboardWillShowNotification/keyboardWillHideNotificationの使い方
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
環境
- Xcode:15.0.1
- watchOS:10.0
- Swift:5.9
- macOS:Sonoma 14.1
キーボードの表示/非表示を検知する方法
公式リファレンス:UIResponder.keyboardWillShowNotification
Swiftでキーボードが表示されたかどうかを検知するにはNotificationCenter
クラスを使用してUIResponder
のkeyboardWillShowNotification
/keyboardWillHideNotification
を観測対象にします。
keyboardWillShowNotification
ではキーボードが表示されたことをkeyboardWillHideNotification
ではキーボードが非表示になったことを検知することができます。
NotificationCenter.default.publisher(for: UIResponder.keyboardWillShowNotification)
.sink { [weak self] _ in
print("キーボードが表示されたよ")
}
.store(in: &cancellables)
NotificationCenter.default.publisher(for: UIResponder.keyboardWillHideNotification)
.sink { [weak self] _ in
print("キーボードが非表示になったよ")
}
.store(in: &cancellables)
Swift UIで使用できる管理クラスを実装してみました。
import SwiftUI
import Combine
final class KeyboardResponder: ObservableObject {
@Published var isKeyboardVisible: Bool = false
private var cancellables = Set<AnyCancellable>()
init() {
NotificationCenter.default.publisher(for: UIResponder.keyboardWillShowNotification)
.sink { [weak self] _ in
self?.isKeyboardVisible = true
}
.store(in: &cancellables)
NotificationCenter.default.publisher(for: UIResponder.keyboardWillHideNotification)
.sink { [weak self] _ in
self?.isKeyboardVisible = false
}
.store(in: &cancellables)
}
}
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。