在我的Nativescript应用程序中,应用程序从登录页面开始。在iOS上,一切看起来都不错,但在Android上,用户名字段是聚焦的,键盘正在显示。有没有办法防止这种情况发生?
到目前为止,我已经尝试过:
这些都不起作用。是否有其他方法可以在加载页面时隐藏键盘?
谢谢
答案 0 :(得分:4)
所以我最终实现了一个不同的解决方案。这可能不是最好的方法,但它在我的情况下达到了它的目的,我想为那些面临类似情况的人分享它。
在页面加载的事件中我包含了这段代码:
if (page.android) {
var un = page.getViewById('username');
var p = page.getViewById('password');
un.android.setFocusable(false);
p.android.setFocusable(false);
setTimeout(function () {
un.android.setFocusableInTouchMode(true);
p.android.setFocusableInTouchMode(true);
}, 300);
}

这里的关键是setTimeout函数(感谢Emil Oberg指出我正确的方向)。据我了解,这是正在发生的事情:
此时加载页面时没有任何字段需要对焦且键盘隐藏。如果用户点击键盘将出现的任何字段,他们可以照常登录。
正如我所提到的,这可能不是最好或最正确的方法,但对我有用。希望这可以节省一些时间来研究这个问题。
答案 1 :(得分:3)
我猜用户名字段是textview或textfield。如果是这样,请在loaded
回调中尝试此操作:
var myTextview = page.getViewById("myTextView");
myTextView.dismissSoftInput();
答案 2 :(得分:2)
您希望清除 SELECT *
FROM root r
WHERE r.is_approved = true
AND r.posted_by = "' + first.posted_by + '"
AND r.location = "' + first.location + '"
回调中字段的焦点:
loaded
答案 3 :(得分:0)
将上述两个技巧结合起来怎么样?
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)
}
}