2016-05-13 23 views
5

Sau khi nâng cấp lên phiên bản 0.26.0-rc, trên iOs dòng này:Phản ứng Native DeviceEventEmitter keyboardWillShow ngừng làm việc

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

không có gì. Khi bàn phím được mở, phương pháp updateKeyboardSpace không bao giờ được gọi.

tôi nhập khẩu DeviceEventEmitter với điều này:

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

tôi nâng cấp từ phiên bản 0.21, nó đã làm việc tốt ở đó.

Trả lời

9

It seems like you can not use this kind of event listener any more. Điều này có vẻ là handled by the Keyboard component now, sử dụng thư viện gốc. Đối với iOS it is defined here, tên sự kiện có vẻ giống nhau; Tuy nhiên, tôi không thể tìm thấy triển khai Android. Bạn sẽ cần phải kiểm tra xem công trình này, nhưng đối với iOS này nên làm như lừa:

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

EDIT:

API giải thích là chỉ nội bộ. Để sử dụng bình thường, người ta có thể sử dụng callbacks on the ScrollResponder. You could use eitheronKeyboardWillShowonKeyboardWillHide. Mixin ScrollResponder được sử dụng trong ScrollViewListView, vì vậy bạn có thể sử dụng đạo cụ này ở đó.

I did a small example on github.

+1

Đó trông tuyệt vời! Sẽ cố gắng thử nghiệm càng sớm càng tốt! – Cherniv

+0

tuyệt vời, hãy cho tôi biết;) –

+1

Không thể làm cho nó hoạt động, không có vấn đề gì tôi làm điều đó ném lỗi: * undefined không phải là một đối tượng (đánh giá '_reactNative.Keyboard.addListener') *. Đây là thông điệp đầy đủ: https://jsfiddle.net/fh3wq8L1/ – Cherniv

5

Trên Android, bạn có thể sử dụng thay vì những 2 sự kiện:

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

thử nghiệm trên 0.26.0

+0

Cảm ơn bạn đã trả lời, tôi biết về Android, nó không hoạt động cho tôi trên iO, Xin lỗi vì tôi không chỉ định câu hỏi của tôi – Cherniv

+0

Không vấn đề gì, chỉ là tôi đang tìm kiếm câu trả lời cho android nhưng tôi không tìm thấy gì cho đến khi tôi tìm kiếm mã RN và chia sẻ ở đây trong trường hợp ai đó cần – alex88

Các vấn đề liên quan