gpt4 book ai didi

iOS: 有时键盘会把整个 qml 页面推上去

转载 作者:可可西里 更新时间:2023-11-01 05:51:18 25 4
gpt4 key购买 nike

我正在开发一个跨平台的 QML QtQuick 应用程序。一个窗口是典型的聊天窗口,下面有标题、消息区域和文本编辑输入。在 iOS 上(在模拟器和真实设备中)我遇到了虚拟键盘的问题,它“移动”了文本编辑以及整个窗口向上并且不允许看到标题。

这是应用程序窗口的屏幕截图:https://drive.google.com/file/d/0B6ZI4g3F2MLOSXB2RjBDbGNEWEk

issue已经在 Qt bug tracker 中注册了。但是没有解决办法。而且论坛上也有人反射(reflect)过类似的问题,没有人回答。

关于解决方案或解决方法的任何想法?

最佳答案

我过去曾实现过变通办法,但确实存在问题。

键盘回避是一种痛苦,Qt 滚动整个屏幕的统一方法并不理想(尤其是当它有错误且禁用时很痛苦),导致导航栏移出屏幕等。

基本上,我的工作是:

  • 添加一个 MouseArea 作为 TextField 的子项,这将停止设置焦点并启动默认滚动行为
  • MouseAreaonClick 处理程序中,移动该字段,使其不在键盘将出现的区域下方。这可以使用例如状态和行为动画来完成
  • 当动画停止时,将焦点明确设置到文本字段,这将导致键盘出现(但屏幕不会滚动,因为您已将焦点元素移开)

让事物拥有漂亮的动画效果可能会很痛苦。此外,您可以在某种程度上对键盘的大小进行硬编码,但需要求助于 ObjC 来获取实际的键盘高度(并通过某些属性将其公开给 QML)。

另一方面,即键盘解雇,也可能是一种痛苦。需要处理文本字段失去焦点、用户点击空白区域、用户点击关闭键(在 iPad 上)等。结帐 Qt.inputmethod

在 Qt 的辩护中,键盘回避是很难做到的,需要了解应用程序布局才能获得最佳结果。这就是为什么 UIKit 实际上根本不处理它(除非它知道要滚动什么以及滚动多少,例如表格)。

关于iOS: 有时键盘会把整个 qml 页面推上去,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34716462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com