iPhone X 端末にて、landscape時のみ Keyboardの表示が崩れる現象が発生しております。(下記画像を参照ください)
この問題は、Xcode9でビルドしたアプリでのみ発生しております。
(Xcode9より前のバージョンでビルドされれば、問題なく動作いたします)
この問題については、修正に向けて動いております。
修正バージョンがわかり次第コチラに追記します。
追記:2017.3.0p2 、 2017.2.1p2 / 2017.1.3p1 / 5.6.5p1 にて修正の適応が行われました。
■UnityEditor自体の修正を待たずに回避する方法について
通常Macでは
/Applications/Unity
以下にインストールされると思います。
/Applications/Unity/PlaybackEngines/iOSSupport/Trampoline/Classes/UI/
ここに
Keyboard.mm
というファイルがあります。
この中の「- (void)positionInput:(CGRect)kbRect x:(float)x y:(float)y」関数を下記の様に書き直してください。
- (void)positionInput:(CGRect)kbRect x:(float)x y:(float)y { if (_multiline) { // use smaller area for iphones and bigger one for ipads int height = UnityDeviceDPI() > 300 ? 75 : 100; editView.frame = CGRectMake(0, y - height, kbRect.size.width, height); } else { // iPhoneXで横に傾けた時のみ、レイアウトを変更するように対応 その1
int param = 0; ScreenOrientation orient = UnityCurrentOrientation(); const char* model = UnityDeviceModel(); if (!strncmp(model, "iPhone10,3", 10) && (orient == landscapeLeft || orient == landscapeRight ) ) { param = 110; }
// ↑ここまで "iPhoneXで横に傾けた時のみ、レイアウトを変更するように対応 その1" editView.frame = CGRectMake(0, y - kToolBarHeight, kbRect.size.width, kToolBarHeight); inputView.frame = CGRectMake(inputView.frame.origin.x, inputView.frame.origin.y, kbRect.size.width - 3 * 18 - 2 * 50 - param, // <- " - param"を追加 inputView.frame.size.height); } _area = CGRectMake(x, y, kbRect.size.width, kbRect.size.height); [self updateInputHidden]; }
0 コメント