swipe to close is not working
kauthenticity opened this issue · 3 comments
I've tried swiping to close image viewing modal but it didn't worked...
It works well on andriod but failed in ios...
if (!scaled &&
swipeToCloseEnabled
&&Math.abs(velocityY) > SWIPE_CLOSE_VELOCITY
) {
console.log("here")
onRequestClose();
}
I've logged scaled
, swieToCloseEnabled
, Math.abs(velocityY)
, SWIPE_CLOSE_VELOCITY
and found out velocityY
was 0
.
I think nativeEvent didn't gives the right velocity... I hope it will be fixed soon.
Thank You!!!!!
here's my react native info
System:
OS: macOS 12.1
CPU: (8) arm64 Apple M1
Memory: 163.31 MB / 16.00 GB
Shell: 5.8 - /bin/zsh
Binaries:
Node: 16.15.0 - /usr/local/bin/node
Yarn: 3.2.0 - /usr/local/bin/yarn
npm: 8.5.5 - /usr/local/bin/npm
Watchman: 2022.05.23.00 - /opt/homebrew/bin/watchman
Managers:
CocoaPods: 1.11.3 - /opt/homebrew/bin/pod
SDKs:
iOS SDK:
Platforms: DriverKit 21.4, iOS 15.4, macOS 12.3, tvOS 15.4, watchOS 8.5
Android SDK: Not Found
IDEs:
Android Studio: 2021.1 AI-211.7628.21.2111.8309675
Xcode: 13.3.1/13E500a - /usr/bin/xcodebuild
Languages:
Java: 11.0.15 - /usr/bin/javac
npmPackages:
@react-native-community/cli: Not Found
react: 17.0.2 => 17.0.2
react-native: 0.68.2 => 0.68.2
react-native-macos: Not Found
npmGlobalPackages:
*react-native*: Not Found
Same problem
It works for me on iOS, but the threshold is set too high, i literally need to swipe all the way from the top of the screen to the bottom to close it.
You can change file onScrollEndDrag in folder
node_modules/react-native-image-viewing/dist/components/ImageItem/ImageItem.android.js
After save it patch save lại change in node module
const onScrollEndDrag = ({ nativeEvent, }) => {
var _a, _b, _c, _d, _e, _f;
const velocityY = (_c = (_b = (_a = nativeEvent) === null || _a === void 0 ? void 0 : _a.velocity) === null || _b === void 0 ? void 0 : _b.y, (_c !== null && _c !== void 0 ? _c : 0));
const offsetY = (_f = (_e = (_d = nativeEvent) === null || _d === void 0 ? void 0 : _d.contentOffset) === null || _e === void 0 ? void 0 : _e.y, (_f !== null && _f !== void 0 ? _f : 0));
if ((Math.abs(velocityY) > SWIPE_CLOSE_VELOCITY &&
offsetY > SWIPE_CLOSE_OFFSET) ||
offsetY > SCREEN_HEIGHT / 2) {
onRequestClose();
}
if(_b?.y>1){
onRequestClose();
}
};