0

各位开发者,我遇到了一个我不知道如何解决的挑战,我知道有成千上万个可能的问题或黑客与我的问题相关:

但是,几乎所有这些都连接到检查屏幕的大小,我可以解释我为什么要找到解决方案的问题的上下文。

我一直在开发一个混合应用程序,我只有一个小问题,就是这个:

预习

不幸的是,在某些设备中最后一行是部分可见的,我知道我应该在 jQuery 中添加什么代码才能正确显示它:

$("input[type=number]").click(function(){
    $("#divCustomTime").css({top: -200, position:'absolute'});
});

但是,如果键盘以不按enter的不同方式关闭,则 div 的位置无法重新定位到其先前的位置,并且我找不到任何破解或技巧的方法,我尝试了不同的方法为了检测解雇事件,例如:

  • 按下后退按钮(根本不触发)。
  • 用于检测 isAcceptingText 的线程。它根本没有用。我在 C# 中尝试过的代码之一的示例:

    [Export]
    [JavascriptInterface]
    public void KeyboardStatus()
    {
        var timer = new System.Threading.Timer(callback, (InputMethodManager)context.GetSystemService(Context.InputMethodService), TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1));
    }
    
    private static void callback(object state)
    {
        if ((InputMethodManager)state.IsAcceptingText) {
    
        } else {
            //never happens
        }
    }
    

    我从哪里得到这个想法?

    https://stackoverflow.com/a/52693953/2889347

    我还尝试了该方法的变体:hideSoftInputFromWindow但它没有用。

您可能会问,为什么不使用 选项adjustResize

它会更容易检测,但是我知道,整个应用程序配置错误和失真,以至于我应该涉及大量 CSS 和 JS,以便或多或少地对其进行配置以使其看起来不那么糟糕,这就是我选择pan而不是resize的原因。

另外,我想强调一下我正在开发Xamarin.Android,但我认为它不会影响编程语言。

有谁知道如何检测它?谢谢。

4

1 回答 1

0

你不能。不可靠。没有 API 可以判断软键盘何时隐藏,甚至何时被框架隐藏。人们尝试使用各种技巧来改变视图的大小,但它们都有误报和漏报,并且分屏等几个功能完全破坏了它。

于 2018-12-15T22:34:57.230 回答