Closed3
ReactNativeでTouchableOpacityがposition absoluteのときにタップが反応しない問題の対応
環境
ReactNative: 0.70.5
React: 18
Android emiulator
機能しなかったコード
iosの場合は問題なく動きましたが、androidの場合はタップしても反応しない。
Toast.tsx
const Toast = () => (
<View style={style.container}>
<TouchableOpacity>
<Text>click me </Text>
</TouchableOpacity>
</View>);
const style = StyleSheet.create({
container: {
position: 'absolute'
zIndex: 9999,
elevation: 9999, // <- androidのzIndex
}
});
何故か、expo の inspectorで一回touchableを有効にしておくと、押せるようになる。(何かのレンダリングのもんだなのかな)
関連ソース
react-native-gesture-handlerからimportすればいけるとと書いてありますが、同じくだめだった。
親のpositionを消すと押せるようになる。
試したこと
width, heightをつけてみる。(だめだった)
Toast.tsx
const Toast = () => (
<View style={style.container}>
<TouchableOpacity>
<Text>click me </Text>
</TouchableOpacity>
</View>);
const style = StyleSheet.create({
container: {
position: 'absolute'
zIndex: 9999,
height: '100%', // 👈追加
widht: '100%', // 👈追加
elevation: 9999 // <- androidのzIndex
}
});
stackoverflow通り、react-native-gesture-handlerからimport (だめだった)
ただ、親のpositionを消すと押せるようになる。
結果はやはり一番外側に親玉のViewでラップしないと、toucheventがトリガーされなかった、解決策として、react-native-root-siblings
を使うしかないきがする。
このスクラップは2ヶ月前にクローズされました