React Native DeviceEventEmitter keyboardWillShow停止工作

Che*_*niv 6 javascript react-native

升级到0.26.0-rc版本后,在iOs上这行:

DeviceEventEmitter.addListener('keyboardWillShow', (e)=>this.updateKeyboardSpace(e));
Run Code Online (Sandbox Code Playgroud)

什么也没做.键盘打开时,updateKeyboardSpace永远不会调用方法.

我用这个导入DeviceEventEmitter:

import React from 'react';
import {DeviceEventEmitter}  from 'react-native';
Run Code Online (Sandbox Code Playgroud)

我从版本0.21升级,它在那里工作正常.

Dan*_*idt 10

看来你不能再使用这种事件监听器了. 这似乎现在由键盘组件处理,它使用本机库.对于iOS,它在这里定义,事件名称似乎是相同的; 但是,我找不到Android实现.您需要测试这是否有效,但对于iOS,这应该可以解决问题:

import {Keyboard}  from 'react-native';
Keyboard.addListener('keyboardWillShow', (e)=>this.updateKeyboardSpace(e));
Run Code Online (Sandbox Code Playgroud)

编辑:

API解释只是内部的.对于正常使用,可以使用ScrollResponder上的回调.你可以使用 onKeyboardWillShowonKeyboardWillHide.ScrollResponder Mixin用于ScrollViewListView,因此您可以在那里使用此道具.

我在github上做了一个小例子.


ale*_*x88 5

在android上,您可以使用这两个事件:

DeviceEventEmitter.addListener('keyboardDidShow', this.keyboardWillShow.bind(this))
DeviceEventEmitter.addListener('keyboardDidHide', this.keyboardWillHide.bind(this))
Run Code Online (Sandbox Code Playgroud)

在0.26.0上测试