天然 reactjs :TouchableOpacity'a onPress()在较慢的Android设备上无法在模态中调用

eeq64g8w  于 2022-12-27  发布在  React
关注(0)|答案(1)|浏览(145)

在较旧且速度较慢的Android设备上,即使按下按钮,也可能不会调用TouchableOpacity上的onPress()方法,并且您可以在视图上看到不透明效果。
奇怪的是,它的统计,在三星Galaxy A8约20%的时间新闻工作,在我的像素6专业版新闻工作100%的时间.
始终调用onPressIn(),但onPress()不确定。

bxgwgixi

bxgwgixi1#

tl;dr不要使用react-native-modals,它有错误,请找到替代方法(我改用react-native-modal
我花了一段时间试图弄清楚为什么onPressIn()被成功调用而onPress()没有被成功调用,我阅读了react-native代码中的逻辑,它使用Gesture Responder System来确定是否应该调用回调。
当印刷机工作时,这些是我从触摸事件系统看到的信号:

RESPONDER_GRANT // (touch detected on View, causes onPressIn() to be called)

DELAY // (can determine whether we want onPress() or onPressLong())

RESPONDER_RELEASE // (finger lifted, depending on DELAY now onPress() / onPressOut() are called)

当媒体不起作用时

RESPONDER_RELEASE

RESPONDER_TERMINATED // (nothing happens)

RESPONDER_TERMINATED意味着其他人控制了手势响应系统,为什么会发生这种情况?我不确定,我不知道为什么react-native-modals会导致这种情况发生,但最终我尝试使用react-native-modal代替,它正确地工作,没有什么劫持我的压力!

相关问题