Estou enfrentando um problema estranho. No meu app nativo react, se eu definir o onPress
evento para View
ele não é disparado, mas se eu definir o mesmo para Text
dentro View
, ele dispara. O que estou perdendo aqui?
<View style={{backgroundColor: "red", padding: 20}}>
<Text onPress={()=> {
console.log('works');
}
}>X</Text>
</View>
<View style={{backgroundColor: "red", padding: 20}} onPress={()=> {
console.log('does not work');
}
}>
<Text>X</Text>
</View>
Porque isto é assim? Este é um problema com o React Native? Estou usando a versão 0.43
react-native
react-native-android
mehulmpt
fonte
fonte
Você pode envolver a visualização com um
TouchableWithoutFeedback
e, em seguida, usaronPress
e amigos como de costume. Além disso, você ainda pode bloquearpointerEvents
definindo o atributo na visualização filho, ele até bloqueia eventos de ponteiro no paiTouchableWithoutFeedback
, é interessante, essa era minha necessidade no Android, não testei no iOS:https://facebook.github.io/react-native/docs/touchablewithoutfeedback.html
fonte
pointerEventsNone
bloco do filho pressiona o pai que envolve o filho?Você pode usar TouchableOpacity, TouchableHighlight, TouchableNativeFeedback para fazer isso. O componente de visualização não fornece onPress como adereços. Então você usa isso em vez disso.
fonte
Como alternativa, você também pode fornecer onStartShouldSetResponder à sua visualização, assim:
fonte