在Android上,一个带有基于滚动的变换的水平ScrollView中的视图在其点击半径内的任何地方都无法注册onPress事件:它似乎是初始变换和其位置(如果没有变换)的交集。
重现步骤:
- 使用给定的Expo snack进行原生expo安装。
- 运行
npx expo run:android
。 - 在蓝色的scrollview中向右滚动一点,直到橙色的盒子完全垂直居中(translateX为0)。
- 损坏 :当你点击橙色盒子下三分之二的部分时,在日志中你会看到
in
和out
。预期的行为是这也应该触发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上没有行为改变(仍然损坏)
3条答案
按热度按时间lxkprmvk1#
感谢您报告这个问题@tomvankruijsbergen
我们已经意识到这个问题,并且正在进行调查。一旦我们有更多关于解决方案的消息,我们会在这里更新。
ukxgm1gy2#
感谢您报告这个问题@tomvankruijsbergen。我们已经意识到这个问题,并且正在调查中。一旦我们有更多关于解决方案的消息,我们会在这里更新。
谢谢您@cortinico,是否有一个问题或PR我可以追踪?
xam8gpfp3#
This is practically the same issue as: