Browse Source

移动设备键盘出来时抬起输入框

lvjincheng 3 years ago
parent
commit
a7297e2e7f

+ 15 - 0
Assets/BowArrow/Resources/Prefabs/Views/FriendView.prefab

@@ -7165,6 +7165,7 @@ GameObject:
   - component: {fileID: 5874404976037904437}
   - component: {fileID: 7456907200332796866}
   - component: {fileID: 9161794581479803672}
+  - component: {fileID: 8128892662084618213}
   m_Layer: 5
   m_Name: SearchBox
   m_TagString: Untagged
@@ -7233,6 +7234,20 @@ MonoBehaviour:
   m_FillOrigin: 0
   m_UseSpriteMesh: 0
   m_PixelsPerUnitMultiplier: 1
+--- !u!114 &8128892662084618213
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7639591496611670146}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: bb33f2a5cf1490b4795b02a599fd7406, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  inputField: {fileID: 0}
+  moveRect: {fileID: 0}
 --- !u!1 &7667905531355012132
 GameObject:
   m_ObjectHideFlags: 0

+ 30 - 0
Assets/BowArrow/Resources/Prefabs/Views/MeView.prefab

@@ -2228,6 +2228,7 @@ GameObject:
   - component: {fileID: 5539318498990096076}
   - component: {fileID: 5539318498990096078}
   - component: {fileID: 5539318498990096079}
+  - component: {fileID: 2909139109551585549}
   m_Layer: 5
   m_Name: InPhone (2)
   m_TagString: Untagged
@@ -2294,6 +2295,20 @@ MonoBehaviour:
   m_FillOrigin: 0
   m_UseSpriteMesh: 0
   m_PixelsPerUnitMultiplier: 1
+--- !u!114 &2909139109551585549
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5539318498990096077}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: bb33f2a5cf1490b4795b02a599fd7406, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  inputField: {fileID: 0}
+  moveRect: {fileID: 0}
 --- !u!1 &5539318499008578372
 GameObject:
   m_ObjectHideFlags: 0
@@ -2719,6 +2734,7 @@ GameObject:
   - component: {fileID: 5539318499294522436}
   - component: {fileID: 5539318499294522438}
   - component: {fileID: 5539318499294522439}
+  - component: {fileID: 8734892430141233889}
   m_Layer: 5
   m_Name: InPhone (1)
   m_TagString: Untagged
@@ -2785,6 +2801,20 @@ MonoBehaviour:
   m_FillOrigin: 0
   m_UseSpriteMesh: 0
   m_PixelsPerUnitMultiplier: 1
+--- !u!114 &8734892430141233889
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5539318499294522437}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: bb33f2a5cf1490b4795b02a599fd7406, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  inputField: {fileID: 0}
+  moveRect: {fileID: 0}
 --- !u!1 &5539318499309827389
 GameObject:
   m_ObjectHideFlags: 0

+ 16 - 5
Assets/BowArrow/Resources/Prefabs/Views/SetUpView.prefab

@@ -495,7 +495,6 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   textKey: setup_screen-distance
   layoutRebuildObject: {fileID: 0}
-  textFormatArgs: []
   languageFontSizes: []
 --- !u!1 &1957444802930511365
 GameObject:
@@ -981,7 +980,6 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   textKey: setup_train-mode
   layoutRebuildObject: {fileID: 0}
-  textFormatArgs: []
   languageFontSizes: []
 --- !u!1 &4637735829160408701
 GameObject:
@@ -995,6 +993,7 @@ GameObject:
   - component: {fileID: 2266541563170002118}
   - component: {fileID: 3416058343924125474}
   - component: {fileID: 4913110111085735418}
+  - component: {fileID: 6508775629189984065}
   m_Layer: 5
   m_Name: RotateConvert
   m_TagString: Untagged
@@ -1087,6 +1086,20 @@ MonoBehaviour:
   m_ChildScaleWidth: 1
   m_ChildScaleHeight: 1
   m_ReverseArrangement: 0
+--- !u!114 &6508775629189984065
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4637735829160408701}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: bb33f2a5cf1490b4795b02a599fd7406, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  inputField: {fileID: 0}
+  moveRect: {fileID: 0}
 --- !u!1 &4890174974628219031
 GameObject:
   m_ObjectHideFlags: 0
@@ -1674,7 +1687,6 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   textKey: setup_screen-size
   layoutRebuildObject: {fileID: 0}
-  textFormatArgs: []
   languageFontSizes: []
 --- !u!1 &5846369377054792261
 GameObject:
@@ -2114,7 +2126,7 @@ RectTransform:
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
-  m_AnchoredPosition: {x: 129.04007, y: 0}
+  m_AnchoredPosition: {x: 128.56792, y: 0}
   m_SizeDelta: {x: 0, y: 0}
   m_Pivot: {x: 0, y: 0.5}
 --- !u!222 &2075870506722154811
@@ -5434,5 +5446,4 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   textKey: setup_fix-game-bg
   layoutRebuildObject: {fileID: 0}
-  textFormatArgs: []
   languageFontSizes: []

+ 145 - 10
Assets/BowArrow/Scenes/Login.unity

@@ -2686,6 +2686,7 @@ GameObject:
   - component: {fileID: 257790178}
   - component: {fileID: 257790180}
   - component: {fileID: 257790179}
+  - component: {fileID: 257790181}
   m_Layer: 5
   m_Name: InUser
   m_TagString: Untagged
@@ -2752,6 +2753,20 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 257790177}
   m_CullTransparentMesh: 0
+--- !u!114 &257790181
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 257790177}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: bb33f2a5cf1490b4795b02a599fd7406, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  inputField: {fileID: 0}
+  moveRect: {fileID: 0}
 --- !u!1 &261231100
 GameObject:
   m_ObjectHideFlags: 0
@@ -3823,9 +3838,9 @@ RectTransform:
   m_Father: {fileID: 72404927}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0, y: 1}
-  m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 35.365723, y: -33.828083}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 35.90244, y: 0}
   m_SizeDelta: {x: 0, y: 0}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &355551584
@@ -4192,6 +4207,7 @@ GameObject:
   - component: {fileID: 466652730}
   - component: {fileID: 466652732}
   - component: {fileID: 466652731}
+  - component: {fileID: 466652733}
   m_Layer: 5
   m_Name: InNickname
   m_TagString: Untagged
@@ -4258,6 +4274,20 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 466652729}
   m_CullTransparentMesh: 0
+--- !u!114 &466652733
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 466652729}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: bb33f2a5cf1490b4795b02a599fd7406, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  inputField: {fileID: 0}
+  moveRect: {fileID: 0}
 --- !u!1 &498195997
 GameObject:
   m_ObjectHideFlags: 0
@@ -6177,7 +6207,7 @@ RectTransform:
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
-  m_AnchoredPosition: {x: 115.726105, y: 0}
+  m_AnchoredPosition: {x: 116.95122, y: 0}
   m_SizeDelta: {x: 0, y: 0}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &750604318
@@ -8552,6 +8582,7 @@ GameObject:
   - component: {fileID: 1077993567}
   - component: {fileID: 1077993569}
   - component: {fileID: 1077993568}
+  - component: {fileID: 1077993570}
   m_Layer: 5
   m_Name: InCaptcha1
   m_TagString: Untagged
@@ -8619,6 +8650,20 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 1077993566}
   m_CullTransparentMesh: 0
+--- !u!114 &1077993570
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1077993566}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: bb33f2a5cf1490b4795b02a599fd7406, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  inputField: {fileID: 0}
+  moveRect: {fileID: 0}
 --- !u!1 &1098956578
 GameObject:
   m_ObjectHideFlags: 0
@@ -8841,6 +8886,7 @@ GameObject:
   - component: {fileID: 1105214626}
   - component: {fileID: 1105214628}
   - component: {fileID: 1105214627}
+  - component: {fileID: 1105214629}
   m_Layer: 5
   m_Name: InPWD1
   m_TagString: Untagged
@@ -8907,6 +8953,20 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 1105214625}
   m_CullTransparentMesh: 0
+--- !u!114 &1105214629
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1105214625}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: bb33f2a5cf1490b4795b02a599fd7406, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  inputField: {fileID: 0}
+  moveRect: {fileID: 0}
 --- !u!1 &1107382989
 GameObject:
   m_ObjectHideFlags: 0
@@ -9434,6 +9494,7 @@ GameObject:
   - component: {fileID: 1179641913}
   - component: {fileID: 1179641915}
   - component: {fileID: 1179641914}
+  - component: {fileID: 1179641916}
   m_Layer: 5
   m_Name: InUser
   m_TagString: Untagged
@@ -9500,6 +9561,20 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 1179641912}
   m_CullTransparentMesh: 0
+--- !u!114 &1179641916
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1179641912}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: bb33f2a5cf1490b4795b02a599fd7406, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  inputField: {fileID: 0}
+  moveRect: {fileID: 0}
 --- !u!1 &1198825416
 GameObject:
   m_ObjectHideFlags: 0
@@ -10127,6 +10202,7 @@ GameObject:
   - component: {fileID: 1366365310}
   - component: {fileID: 1366365312}
   - component: {fileID: 1366365311}
+  - component: {fileID: 1366365313}
   m_Layer: 5
   m_Name: InPWD
   m_TagString: Untagged
@@ -10193,6 +10269,20 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 1366365309}
   m_CullTransparentMesh: 0
+--- !u!114 &1366365313
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1366365309}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: bb33f2a5cf1490b4795b02a599fd7406, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  inputField: {fileID: 0}
+  moveRect: {fileID: 0}
 --- !u!1 &1378382144
 GameObject:
   m_ObjectHideFlags: 0
@@ -10716,6 +10806,7 @@ GameObject:
   - component: {fileID: 1478729130}
   - component: {fileID: 1478729132}
   - component: {fileID: 1478729131}
+  - component: {fileID: 1478729133}
   m_Layer: 5
   m_Name: InPhone
   m_TagString: Untagged
@@ -10782,6 +10873,20 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 1478729129}
   m_CullTransparentMesh: 0
+--- !u!114 &1478729133
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1478729129}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: bb33f2a5cf1490b4795b02a599fd7406, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  inputField: {fileID: 0}
+  moveRect: {fileID: 0}
 --- !u!1 &1493169737
 GameObject:
   m_ObjectHideFlags: 0
@@ -10984,6 +11089,7 @@ GameObject:
   - component: {fileID: 1545576239}
   - component: {fileID: 1545576241}
   - component: {fileID: 1545576240}
+  - component: {fileID: 1545576242}
   m_Layer: 5
   m_Name: InCaptcha
   m_TagString: Untagged
@@ -11051,6 +11157,20 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 1545576238}
   m_CullTransparentMesh: 0
+--- !u!114 &1545576242
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1545576238}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: bb33f2a5cf1490b4795b02a599fd7406, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  inputField: {fileID: 0}
+  moveRect: {fileID: 0}
 --- !u!1 &1549087750
 GameObject:
   m_ObjectHideFlags: 0
@@ -11089,7 +11209,7 @@ RectTransform:
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
-  m_AnchoredPosition: {x: 247.58142, y: 0}
+  m_AnchoredPosition: {x: 250.7317, y: 0}
   m_SizeDelta: {x: 0, y: 0}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &1549087752
@@ -11627,7 +11747,7 @@ RectTransform:
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
-  m_AnchoredPosition: {x: 372.90445, y: 0}
+  m_AnchoredPosition: {x: 377.80487, y: 0}
   m_SizeDelta: {x: 0, y: 0}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &1628073323
@@ -12865,6 +12985,7 @@ GameObject:
   - component: {fileID: 1802940218}
   - component: {fileID: 1802940220}
   - component: {fileID: 1802940219}
+  - component: {fileID: 1802940221}
   m_Layer: 5
   m_Name: InPWD2
   m_TagString: Untagged
@@ -12931,6 +13052,20 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 1802940217}
   m_CullTransparentMesh: 0
+--- !u!114 &1802940221
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1802940217}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: bb33f2a5cf1490b4795b02a599fd7406, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  inputField: {fileID: 0}
+  moveRect: {fileID: 0}
 --- !u!1 &1803470176
 GameObject:
   m_ObjectHideFlags: 0
@@ -13744,9 +13879,9 @@ RectTransform:
   m_Father: {fileID: 72404927}
   m_RootOrder: 1
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0, y: 1}
-  m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 113.78537, y: -28.446342}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 115.51219, y: 0}
   m_SizeDelta: {x: 0, y: 0}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &1847328316
@@ -14232,7 +14367,7 @@ RectTransform:
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
-  m_AnchoredPosition: {x: 310.24292, y: 0}
+  m_AnchoredPosition: {x: 314.26828, y: 0}
   m_SizeDelta: {x: 0, y: 0}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &1900702359

+ 122 - 0
Assets/BowArrow/Scripts/Components/InputFieldLayoutX.cs

@@ -0,0 +1,122 @@
+using System.Collections;
+using UnityEngine;
+using UnityEngine.UI;
+
+public class InputFieldLayoutX : MonoBehaviour
+{
+    public InputField inputField;//输入框组件
+    public RectTransform moveRect;//输入框组件ui框,同时也用于移动
+
+    bool isFocused = false;
+    Vector2 moveRectOriginAnchoredPos;
+    Vector2 moveRectOriginPos;
+    float keyboardHeight_last = 0;
+
+    void Start()
+    {
+        if (inputField == null) {
+            inputField = GetComponentInChildren<InputField>();
+        }
+        if (moveRect == null) {
+            moveRect = GetComponent<RectTransform>();
+        }
+        // Debug.Log($"Screen.height:{Screen.height}");
+        // Debug.Log($"systemHeight:{Display.main.systemHeight}");
+        // Debug.Log($"renderingHeight:{Display.main.renderingHeight}");
+        // Debug.Log($"TouchScreenKeyboard.isSupported:{TouchScreenKeyboard.isSupported}");
+        // Debug.Log($"moveRect.anchoredPosition:{moveRect.anchoredPosition}"); //本地坐标
+        // Debug.Log($"moveRect.position:{moveRect.position}"); //屏幕坐标-跟canvas-scale无关
+    }
+    private void Update()
+    {
+        if (isFocused != inputField.isFocused)
+        {
+            isFocused = inputField.isFocused;
+            if (isFocused) onGetFocused();
+            else onLostFocused();
+        }
+    }
+
+    void onGetFocused()
+    {
+        moveRectOriginAnchoredPos = moveRect.anchoredPosition;
+        moveRectOriginPos = moveRect.position;
+        StartCoroutine(DelayGetKeyboardHeight());
+    }
+
+    void onLostFocused()
+    {
+        keyboardHeight_last = 0;
+        moveRect.anchoredPosition = moveRectOriginAnchoredPos;
+    }
+
+    IEnumerator DelayGetKeyboardHeight()
+    {
+        yield return null;
+        while (inputField.isFocused)
+        {
+            float kb_height = GetKeyboardHeight();
+            if(kb_height > 0 && kb_height != keyboardHeight_last)
+            {
+                keyboardHeight_last = kb_height;
+                SetInputUIHeight(kb_height);
+            }
+            yield return new WaitForSecondsRealtime(0.333f);
+        }
+    }
+
+    void SetInputUIHeight(float keyboardHeight)
+    {
+        float canvasHeight = gameObject.GetComponentInParent<CanvasScaler>().GetComponent<RectTransform>().sizeDelta.y;
+        keyboardHeight = canvasHeight * keyboardHeight / Screen.height;
+        Vector3 posInCanvas = moveRectOriginPos * canvasHeight / Screen.height;
+        float moveRectHeight = posInCanvas.y - moveRect.rect.height * moveRect.pivot.y;
+        if (keyboardHeight > moveRectHeight)
+        {
+            moveRect.anchoredPosition = moveRectOriginAnchoredPos + Vector2.up * (keyboardHeight - moveRectHeight);
+        }
+    }
+       
+    float GetKeyboardHeight()
+    {
+#if !UNITY_EDITOR && UNITY_ANDROID
+        int decorHeight = 0; //输入框高度
+        int freeHeight = 0; //除去键盘后的高度 
+        using (var unityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
+        {   
+            using (var currentActivity = unityClass.GetStatic<AndroidJavaObject>("currentActivity")) 
+            {
+                using (var unityPlayer = currentActivity.Get<AndroidJavaObject>("mUnityPlayer"))
+                {
+                    
+                    using (var view = unityPlayer.Call<AndroidJavaObject>("getView"))
+                    {
+                        using (var rect = new AndroidJavaObject("android.graphics.Rect"))
+                        {
+                            view.Call("getWindowVisibleDisplayFrame", rect);
+                            freeHeight = rect.Call<int>("height");
+                        }
+                    }
+                    using (var dialog = unityPlayer.Get<AndroidJavaObject>("mSoftInputDialog"))
+                    {
+                        using (var window = dialog.Call<AndroidJavaObject>("getWindow"))
+                        {
+                            using (var decorView = window.Call<AndroidJavaObject>("getDecorView"))
+                            {
+                                decorHeight = decorView.Call<int>("getHeight");
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        return Screen.height - freeHeight + decorHeight;
+#elif !UNITY_EDITOR && UNITY_IOS
+        return TouchScreenKeyboard.area.height;
+#elif UNITY_EDITOR
+        return Screen.height * 0.7625f; 
+#else
+        return 0;
+#endif
+    }
+}

+ 11 - 0
Assets/BowArrow/Scripts/Components/InputFieldLayoutX.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: bb33f2a5cf1490b4795b02a599fd7406
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: