触摸文本框外后如何隐藏键盘?

时间:2019-05-08 15:06:39

标签: android ios angular typescript nativescript

我有一个跨平台的应用程序。我有一个具有多个TextField的表单。当用户触摸文本字段之外时,我想隐藏键盘,因为它覆盖了发送数据的按钮。

我该怎么办?

在我的.html文件中,我有:

<ScrollView>
  <GridLayout ios:style="margin-top:50">
    <StackLayout class="form">

      <!-- Some TextView -->

    </StackLayout>
  </GridLayout>
</ScrollView>

编辑

这是显示错误的Playground

4 个答案:

答案 0 :(得分:2)

在最新版本的NS 6.0+中隐藏键盘的正确方法是直接访问上下文。

import { isIOS, isAndroid } from 'tns-core-modules/platform';
import * as utils from 'tns-core-modules/utils/utils';
declare const UIApplication;

  dismissKeyboard() {
    if (isIOS) {
      UIApplication.sharedApplication.keyWindow.endEditing(true);
    }
    if (isAndroid) {
      utils.ad.dismissSoftInput();
    }
  }

答案 1 :(得分:0)

向您的布局添加tap侦听器,并使用来隐藏键盘

iOS

import * as utils from "tns-core-modules/utils/utils";

utils.ios
        .getter(UIApplication, UIApplication.sharedApplication)
        .keyWindow
        .endEditing(true);

Android

utils.ad.dismissSoftInput();

修改

如果您的dismissSoftInput()中只有一个TextField,则可以简单地在TextField上调用Page方法。如果您在TextField上有多个Page,并且不确定实际上是哪个焦点,那么上面的代码会有所帮助。

Playground Sample

答案 2 :(得分:0)

科特琳:

new spec

还将XML添加到父布局'focusableInTouchMode = true'

答案 3 :(得分:0)

Android中,隐藏键盘:

public void hideSoftKeyboard(Activity mActivity) {
    InputMethodManager inputManager = (InputMethodManager) mActivity.getSystemService(Activity.INPUT_METHOD_SERVICE);
    inputManager.hideSoftInputFromWindow(mActivity.getCurrentFocus().getWindowToken(), 0);
}