我看过很多关于这个问题的主题,但目前为止我找不到任何有效的解决方法。我有一个竖屏应用程序,其中包含大多数输入字段的表单。
我已经创建了一个ScrollView,并在里面添加了所有必要的字段。我添加了垂直布局组和内容大小适配器。现在,当我运行应用程序时,内容可以很好地移动,但是当我打开键盘时,它会覆盖内容,而且我在编辑下面的输入字段时无法看到它们。这看起来不太好。因此,我正在寻找一个脚本/插件,以启用android和iOS的此功能。我只看到了iOS特定的解决方案和通用解决方案,但都没有对我起作用。我可以链接我找到的所有代码,但我认为这只会创造出一个不必要的混乱。这些主题中的大部分都是旧的,可能以前可以工作,但现在不起作用。
理想情况下,我希望有一个全局解决方案,当键盘打开时,整个应用程序都会缩小,当键盘关闭时再扩展回来。
顺便说一句,我正在使用Unity 2019.2.15f1,并在Pixel 3XL上运行Android 10,如果这很重要。
编辑:
我创建了一个小型演示项目,您可以在其中测试键盘大小脚本:
这个想法看起来不错,但有几个问题:
1)“added”高度似乎有效,但是滚动内容也应该移动(我在GetKeyboard高度方法的最后一行尝试修复它,但它不起作用)。如果您滚动到底部输入字段并点击它,则打开键盘后,此字段应该位于其上方。
2)当我第二次在另一个输入字段上点击时,而第一个输入字段正在编辑时,会导致onEndEdit被调用并关闭键盘。
布局层次结构如下:
我已经创建了一个ScrollView,并在里面添加了所有必要的字段。我添加了垂直布局组和内容大小适配器。现在,当我运行应用程序时,内容可以很好地移动,但是当我打开键盘时,它会覆盖内容,而且我在编辑下面的输入字段时无法看到它们。这看起来不太好。因此,我正在寻找一个脚本/插件,以启用android和iOS的此功能。我只看到了iOS特定的解决方案和通用解决方案,但都没有对我起作用。我可以链接我找到的所有代码,但我认为这只会创造出一个不必要的混乱。这些主题中的大部分都是旧的,可能以前可以工作,但现在不起作用。
理想情况下,我希望有一个全局解决方案,当键盘打开时,整个应用程序都会缩小,当键盘关闭时再扩展回来。
顺便说一句,我正在使用Unity 2019.2.15f1,并在Pixel 3XL上运行Android 10,如果这很重要。
编辑:
我创建了一个小型演示项目,您可以在其中测试键盘大小脚本:
https://drive.google.com/file/d/1vj2WG2JA1OHPc3uI4PNyAeYHtuHTLUXh/view?usp=sharing
它包含3个脚本: ScrollContent.cs - 它以编程方式将InputH.cs脚本附加到每个输入字段。 InputH.cs - 通过调用KeyboardSize脚本中的OpenKeyboard / CloseKeyboard处理单个输入字段的开始(OnPointerClick)和结束(onEndEdit)。 KeyboardSize.cs - 来自@Remy_rm的脚本,稍作修改(添加了一些日志,IsKeyboardOpened方法和我的试图调整键盘滚动位置)。这个想法看起来不错,但有几个问题:
1)“added”高度似乎有效,但是滚动内容也应该移动(我在GetKeyboard高度方法的最后一行尝试修复它,但它不起作用)。如果您滚动到底部输入字段并点击它,则打开键盘后,此字段应该位于其上方。
2)当我第二次在另一个输入字段上点击时,而第一个输入字段正在编辑时,会导致onEndEdit被调用并关闭键盘。
布局层次结构如下:
![enter image description here](https://istack.dev59.com/AUSxL.webp)
scrollRect.content.anchoredPosition
。 为了向下滚动,您需要设置的是scrollRect.verticalNormalizedPosition
https://docs.unity3d.com/2017.3/Documentation/ScriptReference/UI.ScrollRect-verticalNormalizedPosition.html 它接受0到1之间的值来设置滚动量。 我已更新我的答案以反映这一点。 - Remy