react native 键盘事件

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

我门线引入需要的组件

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();

    }

  };

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值