概要
前回作成したLINE風のUIを、ネイティブを書かずにiosに対応させる方法があったので試しました。
デバイスを横向きにした時のセーフエリア設定も調整しています。
サンプル
https://github.com/Okamochi000/TextChatUI2
前回の記事
実証環境
- OS:Windows
- Unityバージョン:2021.1.14f1
- Androidバージョン : 11
- OS:Mac
- Xcodeバージョン:12.5
- iPhone機種:iPhone SE
- iosバージョン:14.5
領域外タップでモバイルキーボードを閉じないようにする
通常のInputFieldはモバイルキーボード外をタップするとフォーカスが外れてモバイルキーボードが自動で閉じます。
それはInputFieldのOnDeselectで「DeactivateInputField」が呼ばれるためです。
そのため、InputFieldを継承したクラスを作成してOnDeselectの処理を呼ばないようにしています。
※ Androidは挙動が違うため、これを適用してもモバイルキーボードは自動閉じます。
ちなみに、iosでTouchScreenKeyboard.Openから呼び出した場合は領域外をタップしても閉じず、他のUIもタップできます。
問題点
前回はInputFieldから生成されたモバイルキーボードは使用せず、ネイティブコードでモバイルキーボードと入力欄を制御していました。
しかし今回は、InputFieldからモバイルキーボードを生成して入力欄は「Hide Mobile Input」で消しています。
「Hide Mobile Input」を使用した場合の問題点として、「貼り付け」「選択範囲のコピーや切り取り」が出来ないということがあります。
InputField内のテキストはUnityのUIであるため、ネイティブで作成した入力欄とは挙動が違うからです。
「Hide Mobile Input」を使用せずに出した入力欄の挙動と同じにしたい場合は、前回のネイティブコードを使用した方にしたほうがよいです。
投稿者プロフィール

最新の投稿
- 2023年10月9日プログラミング【ライセンス】GPL/LGPLライブラリについて
- 2023年8月19日その他【Pixiv】閲覧注意機能が反映されないときに確認すること
- 2023年4月30日プログラミング【JavaScript】ファイルの保存先をダイアログで指定する方法 – showSaveFilePicker()の使い方
- 2022年10月17日その他「NovelAI Diffusion」を使ってみた (Img2Img)