react native 键盘事件

news/2024/7/15 20:31:12 标签: react native, 计算机外设, react.js

在做修改密码功能是发现他的键盘第一次调起之后然后收起键盘焦点不会消失而且键盘也不会再调起来了

我门线引入需要的组件

import {

  StyleSheet,

  View,

  TextInput,

  Keyboard,

  TouchableWithoutFeedback,

} from 'react-native';
import React, {useEffect, useState, useRef} from 'react';

 

    <TouchableWithoutFeedback
      onPress={() => {
        closeKeyboard();
      }}>
      <View style={[globalStyles.wrapPadding, styles.forget]}>
        <View style={[globalStyles.jdCardListWrap, styles.card]}>
          <ListItem bottomDivider containerStyle={[styles.list]}>
            <ListItem.Content>
              <ListItem.Title>旧密码</ListItem.Title>
            </ListItem.Content>
            <TextInput
              maxLength={12}
              ref={textInputOld}
              onSubmitEditing={Keyboard.dismiss}
              style={styles.input}
              // 是否显示密码
              secureTextEntry={isPassword}
              // 键盘绑定的值
              value={oldPwd}
              onChangeText={t => {
                setOldPwd(t);
              }}
              placeholder="请输入密码"></TextInput>
          </ListItem>
        </View>

        <Button
          title="提交"
          color="primary"
          size="lg"
          containerStyle={[styles.button]}
          onPress={() => {
            ruleFormData();
          }}
        />
      </View>
    </TouchableWithoutFeedback>

获取输入框

 const textInputOld = useRef(null);

  // 键盘是否关闭

  const [keyboardIsShow, setKeyboardIsShow] = useState<boolean>(false);

然后再 useEffect 中

// 这里取监听键盘事件
useEffect(() => {
    // 监听键盘收起事件
    const hideSubscription = Keyboard.addListener('keyboardDidHide', ():void => {
      setKeyboardIsShow(false);
      // 键盘关闭 让输入框失去焦点
      textInputOld.current.blur();
    });
    const showSubscription = Keyboard.addListener('keyboardDidShow', ():void => {
      setKeyboardIsShow(true);
    });
    return () => {
      // 销毁键盘事件
      hideSubscription.remove();
      showSubscription.remove();
    };
  }, []);

 点击空白地方取消键盘,我们再最外层加上该组件

 

  const closeKeyboard = ():void => {

    if (keyboardIsShow) {

        // 收起键盘

      Keyboard.dismiss();

    }

  };


http://www.niftyadmin.cn/n/5448795.html

相关文章

第七届蓝桥杯大赛软件赛省赛Java 大学C组题解

文章目录 A 有奖猜谜思路解题方法复杂度Code B 煤球数目思路解题方法复杂度Code C 平方怪圈思路解题方法复杂度Code D 凑算式思路解题方法复杂度Code E 搭积木思路解题方法复杂度Code F 冰雹数思路解题方法复杂度Code G 四平方和思路解题方法复杂度Code I 密码脱落思路解题方法…

使用Docker搭建Syslog-ng

Syslog-ng是一个可靠、多功能的日志管理系统&#xff0c;用于收集日志并将其转发到指定的日志分析工具。 使用Docker CLI方式搭建 步骤 1: 拉取Syslog-ng镜像 首先&#xff0c;需要从Docker Hub拉取Syslog-ng的官方镜像。 docker pull balabit/syslog-ng:latest步骤 2: 启动…

从零开始一步一步掌握大语言模型---(3-词表示-word representation)

词表示和语言模型 词表示是指把自然语言里面最基本的单位&#xff0c;也就是词&#xff0c;将其转换为机器所能理解的过程。 词表示的目的&#xff1a; 1. 计算词之间的相似度&#xff1b; 2. 推理词之间的关系。 1.最早是如何表示一个词呢&#xff1f; 设目标词是X&#…

详解mysql安装与配置,及Mac中常见的安装问题

目录 1 数据库介绍 什么是数据库 数据库分类 2 MySQL服务器安装 2.1 Windows绿色安装 2.2 Windows中重装MySQL 3 Mac中常见的安装问题 4 客户端连接MySQL服务器 5 SQL分类 1 数据库介绍 什么是数据库 存储数据用文件就可以了&#xff0c;为什么还要弄个数据库? 文件…

蔚来-安全开发一面/二面

基本不怎么会渗透测试&#xff0c;本科期间有过大数据隐私保护(密码)的项目&#xff0c;硕士期间有个华为合作的项目一篇在投的ai安全论文 一面&#xff08;45min&#xff09; 1.介绍自己 2.介绍一下实习 3.场景题轰炸&#xff0c;主要针对实习中的场景&#xff0c;主要考察…

[HackMyVM]靶场 Slowman

kali:192.168.56.104 靶机:192.168.56.132 端口扫描 # nmap 192.168.56.132 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-03-24 15:28 CST Nmap scan report for 192.168.56.132 Host is up (0.00066s latency). Not shown: 995 filtered tcp ports (no-response) …

pytorch 实现多层神经网络MLP(Pytorch 05)

一 多层感知机 最简单的深度网络称为多层感知机。多层感知机由 多层神经元 组成&#xff0c;每一层与它的上一层相连&#xff0c;从中接收输入&#xff1b;同时每一层也与它的下一层相连&#xff0c;影响当前层的神经元。 softmax 实现了 如何处理数据&#xff0c;如何将 输出…

AI在融媒体领域的应用探讨

AI在融媒体领域的应用探讨 ChatGPT是人工智能的一种应用形式&#xff0c;它属于自然语言处理&#xff08;NLP&#xff0c;Nature Language Process&#xff09;领域。 2022年11月30日&#xff0c;由人工智能实验室OpenAI发布的对话式大型语言模型ChatGPT一夜爆火&#xff0c;…