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 App from './App';
import {name as appName} from './app.json';

View File

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

View File

@@ -1,12 +1,13 @@
import {createDrawerNavigator} from '@react-navigation/drawer';
import {NavigationContainer} from '@react-navigation/native';
import * as React from 'react';
import {State} from 'react-native-gesture-handler';
import {Menu} from '../components/Menu';
import {useTracked} from '../provider';
import {eSubscribeEvent, eUnSubscribeEvent} from '../services/EventManager';
import {eCloseSideMenu, eOpenSideMenu} from '../utils/Events';
import {sideMenuRef} from '../utils/Refs';
import { sleep } from '../utils/TimeUtils';
import {sideMenuRef, tabBarRef} from '../utils/Refs';
import {sleep} from '../utils/TimeUtils';
import {NavigatorStack} from './NavigatorStack';
const Drawer = createDrawerNavigator();
@@ -18,11 +19,10 @@ export const NavigationStack = ({component = NavigatorStack}) => {
const [initRender, setInitRender] = React.useState(true);
React.useEffect(() => {
console.log("rendering drawer");
console.log('rendering drawer');
sleep(1000).then(() => {
setInitRender(false);
})
});
}, []);
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 (
<NavigationContainer ref={sideMenuRef}>
<NavigationContainer onStateChange={_onStateChange} ref={sideMenuRef}>
<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={{
swipeEnabled: locked || deviceMode !== 'mobile' ? false : true,
gestureEnabled: locked || deviceMode !== 'mobile' ? false : true,
}}
drawerStyle={{
width: initRender ? 0 : deviceMode !== 'mobile' ? 0 : '65%',
height:initRender? 0 : null,
height: initRender ? 0 : null,
borderRightWidth: 0,
}}
edgeWidth={200}