fix gestures on ios

This commit is contained in:
ammarahm-ed
2020-12-06 11:49:40 +05:00
parent f138c754d1
commit a606335ce2
3 changed files with 36 additions and 9 deletions

View File

@@ -1,3 +1,4 @@
import 'react-native-gesture-handler'
import {AppRegistry} from 'react-native'; import {AppRegistry} from 'react-native';
import App from './App'; import App from './App';
import {name as appName} from './app.json'; import {name as appName} from './app.json';

View File

@@ -78,9 +78,10 @@ let updatedDimensions = {
let currentScroll = 0; let currentScroll = 0;
let startLocation = 0; let startLocation = 0;
let startLocationX = 0;
const _responder = (e) => { const _responder = (e) => {
startLocation = e.nativeEvent.pageY; startLocation = e.nativeEvent.pageY;
startLocationX = e.nativeEvent.pageX
_handleTouch(); _handleTouch();
return false; return false;
}; };
@@ -95,13 +96,21 @@ const _handleTouch = () => {
if (currentScroll === 0 || currentScroll === 1) { if (currentScroll === 0 || currentScroll === 1) {
tabBarRef.current?.setScrollEnabled(false); tabBarRef.current?.setScrollEnabled(false);
} }
}else
if (currentTab === 0 && startLocationX < (updatedDimensions.width*0.75)) {
console.log("here it is here");
if (currentScroll === 0 || currentScroll === 1) {
tabBarRef.current?.setScrollEnabled(false);
}
} else { } else {
console.log("blocking");
tabBarRef.current?.setScrollEnabled(true); tabBarRef.current?.setScrollEnabled(true);
} }
} }
}; };
const _onTouchEnd = (e) => { const _onTouchEnd = (e) => {
console.log("touch ended");
startLocation = 0; startLocation = 0;
tabBarRef.current?.setScrollEnabled(true); tabBarRef.current?.setScrollEnabled(true);
}; };
@@ -215,7 +224,7 @@ const AppStack = React.memo(
height: '100%', height: '100%',
backgroundColor: colors.bg, backgroundColor: colors.bg,
}} }}
onMoveShouldSetResponder={_moveResponder} onMoveShouldSetResponderCapture={_moveResponder}
onTouchEnd={_onTouchEnd} onTouchEnd={_onTouchEnd}
onStartShouldSetResponder={_responder}> onStartShouldSetResponder={_responder}>
{mode && ( {mode && (

View File

@@ -1,12 +1,13 @@
import {createDrawerNavigator} from '@react-navigation/drawer'; import {createDrawerNavigator} from '@react-navigation/drawer';
import {NavigationContainer} from '@react-navigation/native'; import {NavigationContainer} from '@react-navigation/native';
import * as React from 'react'; import * as React from 'react';
import {State} from 'react-native-gesture-handler';
import {Menu} from '../components/Menu'; import {Menu} from '../components/Menu';
import {useTracked} from '../provider'; import {useTracked} from '../provider';
import {eSubscribeEvent, eUnSubscribeEvent} from '../services/EventManager'; import {eSubscribeEvent, eUnSubscribeEvent} from '../services/EventManager';
import {eCloseSideMenu, eOpenSideMenu} from '../utils/Events'; import {eCloseSideMenu, eOpenSideMenu} from '../utils/Events';
import {sideMenuRef} from '../utils/Refs'; import {sideMenuRef, tabBarRef} from '../utils/Refs';
import { sleep } from '../utils/TimeUtils'; import {sleep} from '../utils/TimeUtils';
import {NavigatorStack} from './NavigatorStack'; import {NavigatorStack} from './NavigatorStack';
const Drawer = createDrawerNavigator(); const Drawer = createDrawerNavigator();
@@ -18,11 +19,10 @@ export const NavigationStack = ({component = NavigatorStack}) => {
const [initRender, setInitRender] = React.useState(true); const [initRender, setInitRender] = React.useState(true);
React.useEffect(() => { React.useEffect(() => {
console.log("rendering drawer"); console.log('rendering drawer');
sleep(1000).then(() => { sleep(1000).then(() => {
setInitRender(false); setInitRender(false);
}) });
}, []); }, []);
const setGestureDisabled = () => { const setGestureDisabled = () => {
@@ -42,16 +42,33 @@ export const NavigationStack = ({component = NavigatorStack}) => {
}; };
}, []); }, []);
const _onStateChange = (e) => {
if (e.history.findIndex((o) => o.type === 'drawer') === -1) {
tabBarRef.current?.setScrollEnabled(true);
}
};
return ( return (
<NavigationContainer ref={sideMenuRef}> <NavigationContainer onStateChange={_onStateChange} ref={sideMenuRef}>
<Drawer.Navigator <Drawer.Navigator
gestureHandlerProps={{
onHandlerStateChange: (e) => {
let eventState = e.nativeEvent.state;
if (eventState !== State.ACTIVE || eventState !== State.BEGAN) {
let state = sideMenuRef.current.getRootState();
if (state.history.findIndex((o) => o.type === 'drawer') === -1) {
tabBarRef.current?.setScrollEnabled(true);
}
}
},
}}
screenOptions={{ screenOptions={{
swipeEnabled: locked || deviceMode !== 'mobile' ? false : true, swipeEnabled: locked || deviceMode !== 'mobile' ? false : true,
gestureEnabled: locked || deviceMode !== 'mobile' ? false : true, gestureEnabled: locked || deviceMode !== 'mobile' ? false : true,
}} }}
drawerStyle={{ drawerStyle={{
width: initRender ? 0 : deviceMode !== 'mobile' ? 0 : '65%', width: initRender ? 0 : deviceMode !== 'mobile' ? 0 : '65%',
height:initRender? 0 : null, height: initRender ? 0 : null,
borderRightWidth: 0, borderRightWidth: 0,
}} }}
edgeWidth={200} edgeWidth={200}