Вложенные Touchables в React Native
Я испытываю проблему, когда двойные касания (до одновременных касаний) внутри вложенных Touchables приходят вместо родительского Touchable.
В приведенном ниже примере Touchables вложены в три слоя глубиной. Когда я нажимаю самый глубокий сенсорный (окрашен синим цветом), консоль правильно печатает "синий". Это также ведет себя правильно, когда я нажимаю на другие слои, печатая "зеленый" и "красный" соответственно.
Странное поведение возникает, когда я делаю что-то с двумя одновременными касаниями и отпускаю - тогда onPress затронутого слоя вообще не вызывается. Вместо этого родительский Touchable получает только одно касание, когда оба касания закончены.
Кроме того, когда я выполняю два одновременных прикосновения к самому внешнему слою (красный, без родительского прикосновения)- этот слой получит прикосновение. Это кажется более правильным с моей точки зрения, но отличается от странного поведения во вложенных документах, описанных выше.
<View style={{flex:1, backgroundColor:"#666666"}}>
<TouchableHighlight onPress={()=>{console.log("red")}}>
<View style={{backgroundColor:"#FF0000", height:300}}>
<TouchableHighlight onPress={()=>{console.log("green")}}>
<View style={{backgroundColor:"#00FF00", height:200}}>
<TouchableHighlight onPress={()=>{console.log("blue")}}>
<View style={{backgroundColor:"#0000FF", height:100}} />
</TouchableHighlight>
</View>
</TouchableHighlight>
</View>
</TouchableHighlight>
</View>
1 ответ
Я скопировал ваш код, и я немного не понимаю, выглядит ли он на самом деле как то, что вы пытаетесь достичь: https://snack.expo.io/@zvona/onpressin
Снэк не позволяет использовать несколько касаний, но я делаю длинный выстрел: используйте onPressIn
вместо onPress
,