iPhone X でlandscapeの時に、Keyboardの表示が崩れる

黒河優介 -

iPhone X 端末にて、landscape時のみ Keyboardの表示が崩れる現象が発生しております。(下記画像を参照ください)

IMG_0003.PNG

 

この問題は、Xcode9でビルドしたアプリでのみ発生しております。

(Xcode9より前のバージョンでビルドされれば、問題なく動作いたします)

 

この問題については、修正に向けて動いております。

https://issuetracker.unity3d.com/issues/ios-done-and-cancel-buttons-are-missing-from-keyboard-in-landscape-mode-on-iphone-x

修正バージョンがわかり次第コチラに追記します。

 

■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 コメント

ログインしてコメントを残してください。
Powered by Zendesk