react-native 在Android的水平Animated.ScrollView中,带有变换(transform):translate的动画子项无法正确地被按下,

wj8zmpe1  于 3个月前  发布在  React
关注(0)|答案(3)|浏览(60)

在Android上,一个带有基于滚动的变换的水平ScrollView中的视图在其点击半径内的任何地方都无法注册onPress事件:它似乎是初始变换和其位置(如果没有变换)的交集。

重现步骤:

  • 使用给定的Expo snack进行原生expo安装。
  • 运行 npx expo run:android
  • 在蓝色的scrollview中向右滚动一点,直到橙色的盒子完全垂直居中(translateX为0)。
  • 损坏 :当你点击橙色盒子下三分之二的部分时,在日志中你会看到 inout 。预期的行为是这也应该触发 pressed
  • 如预期 :当你点击橙色盒子的上三分之一时,在日志中你会看到 in , out , pressed
  • 如预期 :在橙色盒子半径以上点击不触发任何日志。
  • 将 translateX输出范围更改为 [200, 0] ,现在只有在点击橙色盒子的下三分之一时才会看到 pressed

注意事项:

  • 如果你将动画从 translateX 更改为 translateY ,它仍然不起作用。
  • 如果你使用 newArchEnabled=false 重新编译Android,一切都按预期工作。
  • 如果你将ScrollView更改为垂直而不是水平地动画,一切都按预期工作。
  • 如果你将动画从 translateX 更改为 skew ,一切都按预期工作。
  • 从TouchableOpacity更改为Pressable不会改变行为
  • 在iOS上按预期工作。
  • 我最初在RN 0.73.5上复现了这个问题。在0.74.1上没有行为改变(仍然损坏)
lxkprmvk

lxkprmvk1#

感谢您报告这个问题@tomvankruijsbergen
我们已经意识到这个问题,并且正在进行调查。一旦我们有更多关于解决方案的消息,我们会在这里更新。

ukxgm1gy

ukxgm1gy2#

感谢您报告这个问题@tomvankruijsbergen。我们已经意识到这个问题,并且正在调查中。一旦我们有更多关于解决方案的消息,我们会在这里更新。
谢谢您@cortinico,是否有一个问题或PR我可以追踪?

相关问题