在Nativescript中正确关闭TextView键盘的方式

7

我有一个TextView:

<TextView id="textFieldBody" hint="Some hint" text="{{  }}" editable="true" class="TextField" returnKeyType="done" />

我正在尝试正确实现以下功能:
  • 当用户按下“完成”时,键盘消失
  • 当用户触摸TextView外部(模糊)时,键盘消失
  • 也许当焦点在TextView上时,向上滚动,以便视图的其余部分不会消失在键盘后面?(还不确定这个)
我不清楚如何实现这一点。我需要实现什么样的后端代码?
理想情况下,我正在寻找适用于iOS和Android的解决方案。

1
要隐藏键盘,您可以使用 dismissSoftInput 方法 - https://docs.nativescript.org/api-reference/classes/_ui_editable_text_base_.editabletextbase.html#dismisssoftinput。 - Nikolay Tsonev
@NikolayTsonev 谢谢!我看到了,但是我不确定如何实现它?我已经像这样添加了:page.getViewById("textFieldBody").dismissSoftInput(); 到我的onLoaded函数中,但是它不起作用。按下完成键会换行。 - Dailyrox
模糊效果已在此处解决:https://stackoverflow.com/q/39949110 - Aleksander Stelmaczonek
1个回答

16

当用户按下“完成”按钮时,键盘会消失

对于这个问题,你可以给TextView添加一个监听器,在用户按下“完成”按钮时触发。根据我查看NativeScript API,这个监听器只适用于TextField,但你可以尝试给TextView使用:

XML代码:

<TextField returnPress="doneTap"/>

在 .js 文件中:

function doneTap(args) {
    var myTextField = args.object;
    myTextField.dismissSoftInput();
}
exports.doneTap = doneTap
当用户触摸TextView之外区域(失焦),键盘将消失。
对于这个问题,您需要将监听器放置在TextField的父视图上。当您点击外部区域时,它将调用隐藏键盘的函数。好处是此监听器将被TextField点击覆盖。因此,当您点击TextField时,键盘仍将显示。您可以在这里找到答案。
当聚焦于TextView时,向上滚动以避免剩余视图被键盘覆盖。
使用这个插件来防止键盘覆盖文本字段。

1
谢谢你的回答!我今天早些时候尝试了returnPress,但它不能与TextView一起使用。 - Dailyrox
好的,针对我的第三个问题,请查看Github上的这个问题:https://github.com/NativeScript/NativeScript/issues/166 和这个插件 https://www.npmjs.com/package/nativescript-iqkeyboardmanager :) - Dailyrox
哦,该死,我忘记了我也在使用那个插件,但它只适用于iOS。 - Dean Le
谢谢!是的,我编辑了我的评论,因为我在几分钟后找到了解决方案 :) - Dailyrox
非常感谢您提供的上一个插件解决方案。 - Jeyarathnem Jeyachanthuru
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接