2

有没有办法通过trigger.io以编程方式关闭屏幕键盘上的Android?trigger.io - 关闭软键盘?

我有一个自动完成搜索的搜索字段。当用户停止输入时,我会显示搜索结果,但屏幕键盘保持可见 - 模糊了一些结果。

+0

尽管我在下面提供了一个解决方案,但我不确定当用户停止输入时隐藏键盘的用户体验是否会很好。你如何定义这个(例如,当用户不输入x秒)?显示/隐藏键盘可能需要一些时间,并且您应该确保用户以后不打字。 – 2013-05-01 19:26:09

回答

7

实际上有这样使用Trigger.io的方法有两种:

本地插件

你可以写一个native plugin隐藏软键盘。相关的代码应该是这个样子(基于Close/hide the Android Soft Keyboard):

InputMethodManager inputMethodManager = (InputMethodManager) ForgeApp.getActivity().getSystemService(Activity.INPUT_METHOD_SERVICE); 
inputMethodManager.hideSoftInputFromWindow(ForgeApp.getActivity().getCurrentFocus().getWindowToken(), 0); 

的Javascript

使用Javascript将模糊是目前的元素隐藏软键盘的正确方法聚焦。在现代浏览器中,你只需要调用:

document.activeElement.blur() 

然而,document.activeElement并不总是可用,有时似乎是不正确的。我用的是这样的:

if (document.activeElement && 
    document.activeElement.blur && 
    document.activeElement !== document.body) { 
    document.activeElement.blur(); 
} 
else { 
    jQuery(':focus').blur(); 
} 

即使这样也不能为一些的Android 2.x的设备上运行。查看How can I hide the Android keyboard using JavaScript?了解更多解决方法。

+0

我需要一个JS解决方案。在输入密钥后调用时工作得很漂亮。 – 2016-07-02 15:28:05