2016-05-13 17 views
5

Dopo l'aggiornamento alla versione 0.26.0-rc, su iOS questa linea:Reagire Native DeviceEventEmitter keyboardWillShow ha smesso di funzionare

DeviceEventEmitter.addListener('keyboardWillShow', (e)=>this.updateKeyboardSpace(e)); 

non fa nulla. Quando la tastiera è aperta, il metodo updateKeyboardSpace non viene mai chiamato.

Sto importando DeviceEventEmitter con questo:

import React from 'react'; 
import {DeviceEventEmitter} from 'react-native'; 

ho aggiornato dalla versione 0.21, stava funzionando benissimo lì.

risposta

9

It seems like you can not use this kind of event listener any more. Questo sembra essere handled by the Keyboard component now, che utilizza librerie native. Per iOS it is defined here, i nomi degli eventi sembrano essere gli stessi; Non sono riuscito a trovare un'implementazione Android, comunque. Si avrebbe bisogno di verificare se questo funziona, ma per iOS questo dovrebbe fare il trucco:

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

EDIT:

L'API ha spiegato era soltanto interna. Per l'utilizzo normale, è possibile utilizzare lo callbacks on the ScrollResponder. You could use eitheronKeyboardWillShow e onKeyboardWillHide. Il Mixin di ScrollResponder viene utilizzato nello ScrollView e nello ListView, quindi è possibile utilizzarlo qui.

I did a small example on github.

+1

Che sembra impressionante! Proverò a testare al più presto! – Cherniv

+0

great, fammi sapere;) –

+1

Impossibile farlo funzionare, non importa cosa faccio io genera errore: * non definito non è un oggetto (valutando '_reactNative.Keyboard.addListener') *. Ecco il messaggio completo: https://jsfiddle.net/fh3wq8L1/ – Cherniv

5

su Android, è possibile utilizzare invece questi 2 eventi:

DeviceEventEmitter.addListener('keyboardDidShow', this.keyboardWillShow.bind(this)) 
DeviceEventEmitter.addListener('keyboardDidHide', this.keyboardWillHide.bind(this)) 

testato su 0.26.0

+0

Grazie per la risposta, so di Android, non funziona per me su iOS, scusa se non ho specificato la mia domanda – Cherniv

+0

Nessun problema, è solo che stavo cercando la risposta per Android ma non ho trovato nulla fino a quando non ho cercato attraverso il codice RN e condiviso qui nel caso in cui qualcun altro ha bisogno – alex88

Problemi correlati