Как сделать так, чтобы TouchableOpacity оборачивала камеру на React Native Android?

Я визуализирую изображение с камеры внутри TouchableOpacity, поддерживающего реакцию, как мне сделать его интерактивным?

Та же версия кода хорошо работает на iOS, touchableOpacity можно щелкнуть и получить правильный результат.

<TouchableOpacity style={{width:'100%', height:300}} onPress={() =>alert("hey")}>
    <Camera 
        style={{ height: 300, width: '100%', display: this.state.camera }}  
        type={this.state.type} 
        autoFocus={'on'} 
        ratio={'4:3'}   
        focusDepth={0} 
        ref={(ref) => { this.camera = ref }}>
    </Camera>
</TouchableOpacity>

Я ожидаю, что на выходе будет предупреждение со словом «эй», когда я нажимаю TouchableOpacity, вместо этого я ничего не получаю на android, но получаю «эй» на iOs.


person daRula    schedule 24.04.2019    source источник


Ответы (1)


Это потому, что поведение TouchableOpacity отличается между iOS и Android. Быстрое решение - просто заменить TouchableOpacity на TouchableWithoutFeedback в Android. Вот как это сделать:

const Touchable = Platform.select({ ios: TouchableOpacity, android: TouchableWithoutFeedback });

Затем просто используйте эту константу, чтобы обернуть представление камеры.

PS: Убедитесь, что вы импортировали TouchableOpacity, TouchableWithoutFeedback и Platform из модуля, поддерживающего реакцию.

person Vinícius Carra    schedule 24.04.2019
comment
Добавьте этот ответ как принятый, если это решило вашу проблему, так другим людям с такой же проблемой будет легче найти это. - person Vinícius Carra; 30.04.2019