Nativescript Android-隐藏键盘

Nativescript Android-隐藏键盘,nativescript,Nativescript,在我的Nativescript应用程序中,应用程序从登录页面开始。在iOS上,一切看起来都很好,但在android上,用户名字段被聚焦,键盘显示出来。有没有办法防止这种情况发生 到目前为止,我已经尝试: 获取另一个元素(标签)的引用并在页面的onload事件中调用lbl.focus() 获取用户名textfield的引用并调用txt.dismissssoftinput()和txt.android.clearFocus() 所有这些都不起作用。加载页面时是否有其他方法隐藏键盘 谢谢您想清除加载

在我的Nativescript应用程序中,应用程序从登录页面开始。在iOS上,一切看起来都很好,但在android上,用户名字段被聚焦,键盘显示出来。有没有办法防止这种情况发生

到目前为止,我已经尝试:

  • 获取另一个元素(标签)的引用并在页面的onload事件中调用lbl.focus()
  • 获取用户名textfield的引用并调用txt.dismissssoftinput()和txt.android.clearFocus()
所有这些都不起作用。加载页面时是否有其他方法隐藏键盘


谢谢

您想清除加载的
回调中字段的焦点:

var searchBar = page.getViewById('my-search-bar-id');
if (searchBar.android) {
    searchBar.android.clearFocus();
}
var myTextview = page.getViewById("myTextView");
myTextView.dismissSoftInput();

我猜用户名字段是textview或textfield。如果是,请在
loaded
callback上尝试此操作:

var searchBar = page.getViewById('my-search-bar-id');
if (searchBar.android) {
    searchBar.android.clearFocus();
}
var myTextview = page.getViewById("myTextView");
myTextView.dismissSoftInput();

所以我最终实现了一个不同的解决方案。这可能不是最好的方法,但在我的情况下,它符合它的目的,我想与你们中面临类似情况的人分享它

在页面的已加载事件中,我包含以下代码:

if(page.android){
var un=page.getViewById('username');
var p=page.getViewById('password');
un.android.setFocusable(false);
p、 android.setFocusable(false);
setTimeout(函数(){
un.android.setFocusableInTouchMode(true);
p、 setFocusableInTouchMode(true);
}, 300);

}
如何结合上述两个技巧

onClear(args) {
      const searchBar = <SearchBar>args.object;
      if (isAndroid && searchBar.android != undefined){//avoid random unpleasant error
         setTimeout(() => { // the key here was this timeout
            searchBar.android.clearFocus();
      }, 1)
   }
}
onClear(args){
const searchBar=args.object;
如果(isAndroid&&searchBar.android!=未定义){//避免随机错误
setTimeout(()=>{//这里的键就是这个超时
searchBar.android.clearFocus();
}, 1)
}
}

谢谢你,埃米尔。我试过:var un=page.getViewById('username');如果(un.android){un.android.clearFocus();}但它不起作用。该字段仍然处于选中状态,键盘处于活动状态,并且您有一个id
username
的输入。看看几个月前我写的代码:是的,你是对的,“username”是文本字段的id。您的代码建议应该是有效的,但由于某些原因它不是。一定发生了其他事情。为了进行调试,请尝试将其包装到
setTimeout()
中。还请注意“注意:当一个视图清除焦点时,框架正试图将焦点赋予从顶部开始的第一个可聚焦视图。因此,如果此视图是从顶部开始的第一个可以聚焦的视图,那么将调用与清除焦点相关的所有回调,然后框架将把焦点赋予此视图。”()好提示,setTimeout()帮助。框架设置焦点,然后代码将其删除。仍然不理想,因为键盘只显示了几分之一秒,但至少在那之后它就隐藏了。还有一个悬而未决的问题——GitHub中也有类似的问题,可能有解决办法。您也可以查看repo中附带的示例项目。我一直在尝试使用此代码,但在我的情况下,它不起作用。我不知道为什么。有什么想法吗?我回顾了您的场景并在本地项目中进行了测试,但是
.clearFocus()
适合我。如果你能提供一些关于你的问题的更多信息,或者如果你能给我发送一个可以在本地调试的示例项目,那会很有帮助。谢谢你,丁,我试过了,但由于某种原因它不起作用。是否需要满足任何其他条件才能使其工作?这只是NativeScript API中textview或textfield的一个方法,因此它应该正常工作。我会尽快做一个测试。迪恩,我最终使用了不同的方法。有关详细信息,请参阅我的答案。谢谢你的帮助。这似乎是目前唯一合法的方法。唉。谢谢你的片段,我会用它的!使用{N}版本3.0.0。似乎是到现在为止唯一的办法。然而,我不得不使用@ViewChild(“email”)inputFldEmail:ElementRef;去看风景。