RxSwift開発環境デモRxSiwftでキーボードの高さを取得するfromUIResponder.keyboardFrameEndUserInfoKeymergeキーボードの高さを監視して処理を行うキーボードでサーフィンをするおわりに参考RxSwiftでキーボードの高さを取得する#RxSwift#Swiftリルオッサ2021.11.26この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。RxSwiftでキーボードの高さを監視して処理したいということがあったので、気温も寒くなり色々と億劫になってしまいそうなところを気分は常夏で記事を書いていきたいと思います。RxSwiftRxは、Observableストリームから値やその他のイベントをブロードキャストおよびサブスクライブできるもの。レスポンスを受け取ったり、プロパティの変化を監視することが可能です。RxSwiftは数あるReactiveXファミリーのひとつで、Swift用に実装されたRxライブラリになります。この記事ではRxSwiftの詳細な説明やインストール方法などについては行いませんのでご了承下さい。RxSwiftの公式ドキュメントを見ていただければと思います。6.2.0デモキーボードの高さを取得して、キーボードでサーフィンするようなものを作ってみました。キーボード閉キーボード開RxSiwftでキーボードの高さを取得するまずはNotificationCenterでキーボードの高さを取得するメソッドを作成しました。}}fromSummary:Arrayを観測可能なシーケンスに変換する。サマリーにもある通り、配列の要素を観測可能なものに変換しています。UIResponder.keyboardFrameEndUserInfoKeyスクローン上でキーボードがアニメーションした後の長方形を確認するCGRectを含むNSValueで、その長方形フレームは現在のデバイスの向きの影響を受けます。キーボードが出現した時のキーボードのCGRectを持っているNSValueでここからキーボードの高さを取得します。複数の非同期処理を並列に実行することができます。渡される順番などが関係なく処理が早く終わった順にストリームに流れます。Mergeから引用させていただきました。上部の2本のストリームがmergeされることで下部の1本のストリームになっており、処理が早く終わった順番に流れてきているのが分かると思います。キーボードの高さを監視して処理を行う今回でいうと、fromで観測可能なシーケンスとなったキーボードが表示された時の高さと非表示になった時の高さがマージされ順番にストリームに流れてきます。その流れてきた値を使って、何らかの処理を行うことができます。}}今回はKeyboardHeightが新しい値に変わった時に、サーファーのBottomConstraintにキーボードの高さ分加えてあげて、波乗りならぬキーボード乗りを表現しています。本来ならば、アニメーションも加えてスムースなキーボード乗りを表現した方がより良いですが今回は割愛させていただきます。RxSwiftを用いたものではないですが、僕の過去の記事でキーボードの高さ×アニメーション使った表現の記事は書いているので良ければ見てあげてください。おわりに「そこの君、波じゃなくてキーボードに乗らないかい?」クラスメソッドでは働く仲間を募集しています。