Как сделать так, чтобы TouchableOpacity оборачивал камеру, активируемую на андроиде React Native? - PullRequest
1 голос
/ 24 апреля 2019

Я отображаю изображение с камеры в реагирующем родном 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

1 Ответ

1 голос
/ 24 апреля 2019

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

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

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

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

...