-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
onPress not work correctly #5977
Comments
Familiar issue from my project, a few things I tried for my case:
|
Oh I will try to update to 3.10 for test, but what is your initialization issue ? |
Few updates for this issue:
You may try using onPressIn to check is that we are same issue Now I'm confused and hopeless on this issue, after making a big effort to upgrade the |
Yes for me onPressIn work perfectly like you, so I think it's the same issue. |
Still not work UP |
Have a look @ software-mansion/react-native-screens#2292. |
Have been facing the same problem for weeks now, anyone got a fix yet? |
Only fix for now i found is to use react native bottom sheet |
I'm on Android (new arch., 0.75, expo) and the onPress events don't work inside my drawer's scrollview, when scrolled. But onPressIn does work. Strange. |
Any update on this? I think this issue does nothing with After several hours of trouble-shooting, I think this issue is most likely related with p.s., I'm using Samsung Galaxy S22 as my test device. |
However I've found a simple workaround. Whenever your animation ends (e.g., the bottom sheet is completely drawn up, or the left side drawer is completely drawn out), just perform a force re-render to the component. You only need to perform this force re-render once. For example: const [, forceRerender] = useState(false);
const translateX = useSharedValue(0);
const timingConfig: WithTimingConfig = useMemo(
() => ({
duration: 200,
easing: Easing.bezier(0.25, 0.1, 0.25, 1),
}),
[]
);
const openDrawer = () => {
"worklet";
translateX.value = withTiming(250, timingConfig, (finished) => {
if (finished) {
runOnJS(forceRerender)(true);
}
});
}; (Disclaimer: I'm new to React Native and I'm not sure if this workaround will introduce new issues) I notice that the actual behavior of the button (or whatever pressable component) in an <Animated.View> is as following. React native seems to "remember" the "original" region of the button that can trigger an When in a scenario like bottom sheet or left side drawer, the new region typically has no overlap with the original region. So the |
Description
(first i thought is bug from react-native, but after checks, is from react-native-reanimated)
I try to create my bottom sheet.
onPress work only one time, when pressable component is in root. Sometimes it's just the first time click, sometimes is after many clicks, and after does not work anymore.
onPressIn work perfectly
The bug is on v0.73.7 (new arch, bridgless false) and v0.74.0 (new arch, bridgless true), tested only on Android.
This is video of the bug:
Record_2024-04-24-22-06-44.mp4
Steps to reproduce
(TEST ON ANDROID, v0.73.7, and v0.74.0, new arch)
Snack or a link to a repository
https://github.com/pigeonmal/react-native-onpress-bug
Reanimated version
3.9.0
React Native version
0.74.0
Platforms
Android
JavaScript runtime
Hermes
Workflow
React Native
Architecture
Fabric (New Architecture)
Build type
None
Device
None
Device model
No response
Acknowledgements
Yes
The text was updated successfully, but these errors were encountered: