Qt iOS端键盘光标显示异常

问题复现:输入大段文字后(有文字在键盘出现时会覆盖的地方),点击最下边的文字,出现光标,然后展示键盘;在展示键盘时光标先跳上去然后再回落到靠近键盘的上方

解决方法:和Android的解决方法类似也是不让它自动展示,改为在qml中检测后手动展示键盘

qt5.9.4下代码有所变动,做如下修改:
不在让其在 /Users/nmlhm/Qt5.9.2/5.9.2/Src/qtbase/src/plugins/platforms/ios/ qiosinputcontext.mm中设置页面滚动了,只需在scrollToCursor函数中直接return 即可; 页面的滚动展示改为由qml中检测,在SScrollView.qml(此文件为自定义的展示页面的文件)中添加如下检测和展示代码:

property var connect:Connections{
        ignoreUnknownSignals: true
        target: Qt.inputMethod
        property var timer: Timer{
            id: idKeyboardTimer
            interval: 30
            onTriggered: {
                if(idBaseScroll.visible && Qt.inputMethod.visible){
                    var keyBoardHeight = idMain.height -  Qt.inputMethod.keyboardRectangle.y;
                    if(Qt.inputMethod.keyboardRectangle.y == 0)
                        keyBoardHeight = Qt.inputMethod.keyboardRectangle.height;
                    var offSet = idMain.height - (Qt.inputMethod.cursorRectangle.y+Qt.inputMethod.cursorRectangle.height+
                                                  keyBoardHeight+offsetDis);
                    if (offSet < 0)
                        idBaseScroll.flickableItem.contentY -= offSet;
                }
            }
        }
        onCursorRectangleChanged: {
            idKeyboardTimer.restart();
        }
        onKeyboardRectangleChanged:{ //
            idKeyboardTimer.restart();
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值