【Unity】Line風のテキストチャット画面(iosのネイティブコードを使用しない)

概要

iPhoneSEの実行画面

前回作成した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」を使用せずに出した入力欄の挙動と同じにしたい場合は、前回のネイティブコードを使用した方にしたほうがよいです。

   

コメントを残す


CAPTCHA