概要
Unityから出力したiOSアプリで、'○'や'△'といった一部記号や、どうも絵文字も入力できない。
これをなんとかしたい。
試したバージョン
Unity 5.3.4f1, Unity 5.3.5f1(執筆時の最新版)
'○'や'△'を入力できるようにする
Unityから出力したXCode Projectのコード UI/Keyboard.mm
の stringContainsEmoji
を常に NO
を返すようにする。
bool stringContainsEmoji(NSString *string)
{
return NO;
}
【追記】
UI/Keyboard.mm
の
#define FILTER_EMOJIS_IOS_KEYBOARD 1
のところを
#define FILTER_EMOJIS_IOS_KEYBOARD 0
にしても上記と同じ効果を得られる模様。
(Unity 5.3.4p1から可能)
どういうこと?
stringContainsEmoji
をコールしているところのコメントによると
We need to do this because Unity's UI doesn't provide proper Unicode support yet.
(意訳:UnityのUIはまだちゃんとUnicodeサポートしてないんで絵文字いれられないようにするよ)
とのこと。
UnityのUIが絵文字をサポートしていないのでキーボードから絵文字を入力させないようにしているらしい。
'○'や'△'は絵文字ではないのだけれど、stringContainsEmoji
の(多分雑な)実装のあおりを食らって入力ができなくなっているようだ。
stringContainsEmoji
で常にNOを返すようにし、'○'や'△'を入力してみると、'○'や'△'といった文字列はちゃんと表示される。
絵文字をいれるとどうなるの?
こうなる。
(stringContainsEmoji
を編集し絵文字をいれられるようにしています)
見事にサポートしていない感じですね。
もうちょっとちゃんと'○'や'△'を入力できるようにする
stringContainsEmoji
でつねにNOを返すようにすると、'○'や'△'が入力できるかわりに絵文字を入力できてしまいマズい。
なので stringContainsEmoji
で Geometric_Shapes(U+25A0-U+25FF)あたりの場合にはNOを返すような実装に変更すれば絵文字は入力できないが、'○'や'△'といった記号は入力できるようになる。
最後に
stringContainsEmoji
関数も実装が雑なのか、一部文字列は入力できてしまったりします…。