XPopup icon indicating copy to clipboard operation
XPopup copied to clipboard

物理返回键导致软键盘和弹框一起消失问题

Open w296365959 opened this issue 2 years ago • 2 comments

XPopup版本 2.9.19

手机系统和型号 xiaomi redmi note8 android 11

描述你的问题 想要物理返回键点击时,如果有软键盘优先隐藏输入法;再次点击才隐藏dialog;

目前现状: 我这继承FullScreenPopupView后,点击物理返回键,会直接导致软键盘和弹框一起消失; 我们重写processKeyEvent也无发在正确处理,因为 键盘的 ViewTreeObserver.OnGlobalLayoutListener监听触发时间比processKeyEven先执行,在processKeyEven触发时软键盘已经消失,导致processKeyEven内无法判断当前软键盘是否开启;

请教下应该如何解决?

w296365959 avatar Oct 13 '23 07:10 w296365959

作者其实已经做了处理,在processKeyEvent里进行了判断,如果当前键盘高度大于0就隐藏键盘,如果小于等于0则关闭弹窗。但是有bug,返回键点击后键盘高度为0后,才会在processKeyEvent进行判断,所以是无效的。

SixPalms avatar Aug 17 '24 09:08 SixPalms

private var mKeyboardHeight=0
//高度变化回调
override fun onKeyboardHeightChange(height: Int) {
    super.onKeyboardHeightChange(height)
    //延迟设置数值 将onBackPressed方法放置到前面执行
    btnSend.postDelayed({
        mKeyboardHeight=height
    },300)
}
override fun onBackPressed(): Boolean {
    if (mKeyboardHeight>0){
        KeyboardUtils.hideSoftInput(activity)
        return true
    }
    return super.onBackPressed()
}

SixPalms avatar Aug 17 '24 09:08 SixPalms