Skip to content

Commit 769a3a2

Browse files
feat(ios): back gesture with full screen swipe (#705)
* wip * wip * revert versions
1 parent 74a1e90 commit 769a3a2

File tree

5 files changed

+151
-62
lines changed

5 files changed

+151
-62
lines changed

example/ios/Podfile.lock

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@ PODS:
302302
- React-jsinspector (0.70.5)
303303
- React-logger (0.70.5):
304304
- glog
305-
- react-native-pager-view (6.1.1):
305+
- react-native-pager-view (6.1.4):
306306
- React-Core
307307
- react-native-safe-area-context (3.4.1):
308308
- React-Core
@@ -403,8 +403,9 @@ PODS:
403403
- React-RCTText
404404
- ReactCommon/turbomodule/core
405405
- Yoga
406-
- RNScreens (2.18.1):
406+
- RNScreens (3.20.0):
407407
- React-Core
408+
- React-RCTImage
408409
- RNSVG (12.4.4):
409410
- React-Core
410411
- SocketRocket (0.6.0)
@@ -617,7 +618,7 @@ SPEC CHECKSUMS:
617618
React-jsiexecutor: 31564fa6912459921568e8b0e49024285a4d584b
618619
React-jsinspector: badd81696361249893a80477983e697aab3c1a34
619620
React-logger: fdda34dd285bdb0232e059b19d9606fa0ec3bb9c
620-
react-native-pager-view: 3c66c4e2f3ab423643d07b2c7041f8ac48395f72
621+
react-native-pager-view: b58cb9e9f42f64e50cab3040815772c1d119a2e2
621622
react-native-safe-area-context: 9e40fb181dac02619414ba1294d6c2a807056ab9
622623
React-perflogger: e68d3795cf5d247a0379735cbac7309adf2fb931
623624
React-RCTActionSheet: 05452c3b281edb27850253db13ecd4c5a65bc247
@@ -634,7 +635,7 @@ SPEC CHECKSUMS:
634635
RNCMaskedView: 0e1bc4bfa8365eba5fbbb71e07fbdc0555249489
635636
RNGestureHandler: a479ebd5ed4221a810967000735517df0d2db211
636637
RNReanimated: 2a91e85fcd343f8af3c58d3425b99fdd285590a5
637-
RNScreens: f7ad633b2e0190b77b6a7aab7f914fad6f198d8d
638+
RNScreens: 218801c16a2782546d30bd2026bb625c0302d70f
638639
RNSVG: ecd661f380a07ba690c9c5929c475a44f432d674
639640
SocketRocket: fccef3f9c5cedea1353a9ef6ada904fde10d6608
640641
Yoga: eca980a5771bf114c41a754098cd85e6e0d90ed7

example/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,16 @@
1111
},
1212
"dependencies": {
1313
"@react-native-community/masked-view": "^0.1.10",
14-
"@react-navigation/native": "^5.8.10",
15-
"@react-navigation/native-stack": "5.0.4",
16-
"@react-navigation/stack": "^5.12.8",
14+
"@react-navigation/native": "~6.1.6",
15+
"@react-navigation/native-stack": "~6.9.12",
16+
"@react-navigation/stack": "~6.3.16",
1717
"react": "18.1.0",
1818
"react-native": "0.70.5",
1919
"react-native-animated-pagination-dots": "^0.1.73",
2020
"react-native-gesture-handler": "^1.9.0",
2121
"react-native-reanimated": "2.12.0",
2222
"react-native-safe-area-context": "^3.1.9",
23-
"react-native-screens": "^2.16.1",
23+
"react-native-screens": "~3.20.0",
2424
"react-native-svg": "12.4.4",
2525
"react-native-tab-view": "^3.1.1"
2626
},

example/yarn.lock

Lines changed: 81 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1295,45 +1295,56 @@
12951295
resolved "https://registry.yarnpkg.com/@react-native/polyfills/-/polyfills-2.0.0.tgz#4c40b74655c83982c8cf47530ee7dc13d957b6aa"
12961296
integrity sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ==
12971297

1298-
"@react-navigation/core@^5.16.1":
1299-
version "5.16.1"
1300-
resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-5.16.1.tgz#e0d308bd9bbd930114ce55c4151806b6d7907f69"
1301-
integrity sha512-3AToC7vPNeSNcHFLd1h71L6u34hfXoRAS1CxF9Fc4uC8uOrVqcNvphpeFbE0O9Bw6Zpl0BnMFl7E5gaL3KGzNA==
1298+
"@react-navigation/core@^6.4.8":
1299+
version "6.4.8"
1300+
resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-6.4.8.tgz#a18e106d3c59cdcfc4ce53f7344e219ed35c88ed"
1301+
integrity sha512-klZ9Mcf/P2j+5cHMoGyIeurEzyBM2Uq9+NoSFrF6sdV5iCWHLFhrCXuhbBiQ5wVLCKf4lavlkd/DDs47PXs9RQ==
13021302
dependencies:
1303-
"@react-navigation/routers" "^5.7.4"
1303+
"@react-navigation/routers" "^6.1.8"
13041304
escape-string-regexp "^4.0.0"
1305-
nanoid "^3.1.15"
1306-
query-string "^6.13.6"
1305+
nanoid "^3.1.23"
1306+
query-string "^7.1.3"
13071307
react-is "^16.13.0"
1308+
use-latest-callback "^0.1.5"
13081309

1309-
"@react-navigation/[email protected]":
1310-
version "5.0.4"
1311-
resolved "https://registry.yarnpkg.com/@react-navigation/native-stack/-/native-stack-5.0.4.tgz#1bf82c529390e7203d65635fc68164b2cbc4093f"
1312-
integrity sha512-i+5o0v582ZxTDrEDJcud5XI4BmzR+RAYAt592dnFgduO0lwIjch+IY5t+8PGg8n9FEN7dj+ivj1V5kx8ZggFQg==
1310+
"@react-navigation/elements@^1.3.17":
1311+
version "1.3.17"
1312+
resolved "https://registry.yarnpkg.com/@react-navigation/elements/-/elements-1.3.17.tgz#9cb95765940f2841916fc71686598c22a3e4067e"
1313+
integrity sha512-sui8AzHm6TxeEvWT/NEXlz3egYvCUog4tlXA4Xlb2Vxvy3purVXDq/XsM56lJl344U5Aj/jDzkVanOTMWyk4UA==
13131314

1314-
"@react-navigation/native@^5.8.10":
1315-
version "5.9.8"
1316-
resolved "https://registry.yarnpkg.com/@react-navigation/native/-/native-5.9.8.tgz#ac76ee6390ea7ce807486ca5c38d903e23433a97"
1317-
integrity sha512-DNbcDHXQPSFDLn51kkVVJjT3V7jJy2GztNYZe/2bEg29mi5QEcHHcpifjMCtyFKntAOWzKlG88UicIQ17UEghg==
1315+
"@react-navigation/native-stack@~6.9.12":
1316+
version "6.9.12"
1317+
resolved "https://registry.yarnpkg.com/@react-navigation/native-stack/-/native-stack-6.9.12.tgz#a09fe43ab2fc4c82a1809e3953021d1da4ead85c"
1318+
integrity sha512-kS2zXCWP0Rgt7uWaCUKrRl7U2U1Gp19rM1kyRY2YzBPXhWGVPjQ2ygBp88CTQzjgy8M07H/79jvGiZ0mlEJI+g==
13181319
dependencies:
1319-
"@react-navigation/core" "^5.16.1"
1320+
"@react-navigation/elements" "^1.3.17"
1321+
warn-once "^0.1.0"
1322+
1323+
"@react-navigation/native@~6.1.6":
1324+
version "6.1.6"
1325+
resolved "https://registry.yarnpkg.com/@react-navigation/native/-/native-6.1.6.tgz#84ff5cf85b91f660470fa9407c06c8ee393d5792"
1326+
integrity sha512-14PmSy4JR8HHEk04QkxQ0ZLuqtiQfb4BV9kkMXD2/jI4TZ+yc43OnO6fQ2o9wm+Bq8pY3DxyerC2AjNUz+oH7Q==
1327+
dependencies:
1328+
"@react-navigation/core" "^6.4.8"
13201329
escape-string-regexp "^4.0.0"
1321-
nanoid "^3.1.15"
1330+
fast-deep-equal "^3.1.3"
1331+
nanoid "^3.1.23"
13221332

1323-
"@react-navigation/routers@^5.7.4":
1324-
version "5.7.4"
1325-
resolved "https://registry.yarnpkg.com/@react-navigation/routers/-/routers-5.7.4.tgz#8b5460e841a0c64f6c9a5fbc2a1eb832432d4fb0"
1326-
integrity sha512-0N202XAqsU/FlE53Nmh6GHyMtGm7g6TeC93mrFAFJOqGRKznT0/ail+cYlU6tNcPA9AHzZu1Modw1eoDINSliQ==
1333+
"@react-navigation/routers@^6.1.8":
1334+
version "6.1.8"
1335+
resolved "https://registry.yarnpkg.com/@react-navigation/routers/-/routers-6.1.8.tgz#ae56b2678dbb5abca5bd7c95d6a8d1abc767cba2"
1336+
integrity sha512-CEge+ZLhb1HBrSvv4RwOol7EKLW1QoqVIQlE9TN5MpxS/+VoQvP+cLbuz0Op53/iJfYhtXRFd1ZAd3RTRqto9w==
13271337
dependencies:
1328-
nanoid "^3.1.15"
1338+
nanoid "^3.1.23"
13291339

1330-
"@react-navigation/stack@^5.12.8":
1331-
version "5.14.9"
1332-
resolved "https://registry.yarnpkg.com/@react-navigation/stack/-/stack-5.14.9.tgz#49c7b9316e6fb456e9766c901e0d607862f0ea7d"
1333-
integrity sha512-DuvrT9P+Tz8ezZLQYxORZqOGqO+vEufaxlW1hSLw1knLD4jNxkz8TJDXtfKwaz//9gb43UhTNccNM02vm7iPqQ==
1340+
"@react-navigation/stack@~6.3.16":
1341+
version "6.3.16"
1342+
resolved "https://registry.yarnpkg.com/@react-navigation/stack/-/stack-6.3.16.tgz#cf94e3c8c1587455515743e91d328beef722e0ab"
1343+
integrity sha512-KTOn9cNuZ6p154Htbl2DiR95Wl+c7niLPRiGs7gjOkyVDGiaGQF9ODNQTYBDE1OxZGHe/EyYc6T2CbmiItLWDg==
13341344
dependencies:
1335-
color "^3.1.3"
1336-
react-native-iphone-x-helper "^1.3.0"
1345+
"@react-navigation/elements" "^1.3.17"
1346+
color "^4.2.3"
1347+
warn-once "^0.1.0"
13371348

13381349
"@sideway/address@^4.1.3":
13391350
version "4.1.4"
@@ -1947,7 +1958,7 @@ collection-visit@^1.0.0:
19471958
map-visit "^1.0.0"
19481959
object-visit "^1.0.0"
19491960

1950-
color-convert@^1.9.0, color-convert@^1.9.3:
1961+
color-convert@^1.9.0:
19511962
version "1.9.3"
19521963
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
19531964
integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
@@ -1971,21 +1982,21 @@ color-name@^1.0.0, color-name@~1.1.4:
19711982
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
19721983
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
19731984

1974-
color-string@^1.6.0:
1985+
color-string@^1.9.0:
19751986
version "1.9.1"
19761987
resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4"
19771988
integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==
19781989
dependencies:
19791990
color-name "^1.0.0"
19801991
simple-swizzle "^0.2.2"
19811992

1982-
color@^3.1.3:
1983-
version "3.2.1"
1984-
resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164"
1985-
integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==
1993+
color@^4.2.3:
1994+
version "4.2.3"
1995+
resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a"
1996+
integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==
19861997
dependencies:
1987-
color-convert "^1.9.3"
1988-
color-string "^1.6.0"
1998+
color-convert "^2.0.1"
1999+
color-string "^1.9.0"
19892000

19902001
colorette@^1.0.7, colorette@^1.2.2:
19912002
version "1.2.2"
@@ -2158,7 +2169,7 @@ decamelize@^1.2.0:
21582169
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
21592170
integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
21602171

2161-
decode-uri-component@^0.2.0:
2172+
decode-uri-component@^0.2.0, decode-uri-component@^0.2.2:
21622173
version "0.2.2"
21632174
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9"
21642175
integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==
@@ -2403,6 +2414,11 @@ extglob@^2.0.4:
24032414
snapdragon "^0.8.1"
24042415
to-regex "^3.0.1"
24052416

2417+
fast-deep-equal@^3.1.3:
2418+
version "3.1.3"
2419+
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
2420+
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
2421+
24062422
fb-watchman@^2.0.0:
24072423
version "2.0.1"
24082424
resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85"
@@ -3641,7 +3657,7 @@ [email protected]:
36413657
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
36423658
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
36433659

3644-
nanoid@^3.1.15:
3660+
nanoid@^3.1.23:
36453661
version "3.3.4"
36463662
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab"
36473663
integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==
@@ -4065,12 +4081,12 @@ pump@^3.0.0:
40654081
end-of-stream "^1.1.0"
40664082
once "^1.3.1"
40674083

4068-
query-string@^6.13.6:
4069-
version "6.14.1"
4070-
resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a"
4071-
integrity sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==
4084+
query-string@^7.1.3:
4085+
version "7.1.3"
4086+
resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.1.3.tgz#a1cf90e994abb113a325804a972d98276fe02328"
4087+
integrity sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==
40724088
dependencies:
4073-
decode-uri-component "^0.2.0"
4089+
decode-uri-component "^0.2.2"
40744090
filter-obj "^1.1.0"
40754091
split-on-first "^1.0.0"
40764092
strict-uri-encode "^2.0.0"
@@ -4088,6 +4104,11 @@ [email protected]:
40884104
shell-quote "^1.6.1"
40894105
ws "^7"
40904106

4107+
react-freeze@^1.0.0:
4108+
version "1.0.3"
4109+
resolved "https://registry.yarnpkg.com/react-freeze/-/react-freeze-1.0.3.tgz#5e3ca90e682fed1d73a7cb50c2c7402b3e85618d"
4110+
integrity sha512-ZnXwLQnGzrDpHBHiC56TXFXvmolPeMjTn1UOm610M4EXGzbEDR7oOIyS2ZiItgbs6eZc4oU/a0hpk8PrcKvv5g==
4111+
40914112
"react-is@^16.12.0 || ^17.0.0 || ^18.0.0", react-is@^18.1.0:
40924113
version "18.2.0"
40934114
resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b"
@@ -4134,11 +4155,6 @@ react-native-gradle-plugin@^0.70.3:
41344155
resolved "https://registry.yarnpkg.com/react-native-gradle-plugin/-/react-native-gradle-plugin-0.70.3.tgz#cbcf0619cbfbddaa9128701aa2d7b4145f9c4fc8"
41354156
integrity sha512-oOanj84fJEXUg9FoEAQomA8ISG+DVIrTZ3qF7m69VQUJyOGYyDZmPqKcjvRku4KXlEH6hWO9i4ACLzNBh8gC0A==
41364157

4137-
react-native-iphone-x-helper@^1.3.0:
4138-
version "1.3.1"
4139-
resolved "https://registry.yarnpkg.com/react-native-iphone-x-helper/-/react-native-iphone-x-helper-1.3.1.tgz#20c603e9a0e765fd6f97396638bdeb0e5a60b010"
4140-
integrity sha512-HOf0jzRnq2/aFUcdCJ9w9JGzN3gdEg0zFE4FyYlp4jtidqU03D5X7ZegGKfT1EWteR0gPBGp9ye5T5FvSWi9Yg==
4141-
41424158
41434159
version "2.12.0"
41444160
resolved "https://registry.yarnpkg.com/react-native-reanimated/-/react-native-reanimated-2.12.0.tgz#5821eecfb1769b1617a67a2d4dec12fdeedb2b6e"
@@ -4157,10 +4173,13 @@ react-native-safe-area-context@^3.1.9:
41574173
resolved "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-3.4.1.tgz#c967a52903d55fe010b2428e5368b42f1debc0a7"
41584174
integrity sha512-xfpVd0CiZR7oBhuwJ2HcZMehg5bjha1Ohu1XHpcT+9ykula0TgovH2BNU0R5Krzf/jBR1LMjR6VabxdlUjqxcA==
41594175

4160-
react-native-screens@^2.16.1:
4161-
version "2.18.1"
4162-
resolved "https://registry.yarnpkg.com/react-native-screens/-/react-native-screens-2.18.1.tgz#47b9991c6f762d00d0ed3233e5283d523e859885"
4163-
integrity sha512-r5WZLpmx2hHjC1RgMdPq5YpSU9tEhBpUaZ5M1SUtNIONyiLqQVxabhRCINdebIk4depJiIl7yw2Q85zJyeX6fw==
4176+
react-native-screens@~3.20.0:
4177+
version "3.20.0"
4178+
resolved "https://registry.yarnpkg.com/react-native-screens/-/react-native-screens-3.20.0.tgz#4d154177395e5541387d9a05bc2e12e54d2fb5b1"
4179+
integrity sha512-joWUKWAVHxymP3mL9gYApFHAsbd9L6ZcmpoZa6Sl3W/82bvvNVMqcfP7MeNqVCg73qZ8yL4fW+J/syusHleUgg==
4180+
dependencies:
4181+
react-freeze "^1.0.0"
4182+
warn-once "^0.1.0"
41644183

41654184
41664185
version "12.4.4"
@@ -4978,6 +4997,11 @@ urix@^0.1.0:
49784997
resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
49794998
integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
49804999

5000+
use-latest-callback@^0.1.5:
5001+
version "0.1.5"
5002+
resolved "https://registry.yarnpkg.com/use-latest-callback/-/use-latest-callback-0.1.5.tgz#a4a836c08fa72f6608730b5b8f4bbd9c57c04f51"
5003+
integrity sha512-HtHatS2U4/h32NlkhupDsPlrbiD27gSH5swBdtXbCAlc6pfOFzaj0FehW/FO12rx8j2Vy4/lJScCiJyM01E+bQ==
5004+
49815005
use-sync-external-store@^1.0.0:
49825006
version "1.2.0"
49835007
resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a"
@@ -5015,6 +5039,11 @@ walker@^1.0.7:
50155039
dependencies:
50165040
makeerror "1.0.x"
50175041

5042+
warn-once@^0.1.0:
5043+
version "0.1.1"
5044+
resolved "https://registry.yarnpkg.com/warn-once/-/warn-once-0.1.1.tgz#952088f4fb56896e73fd4e6a3767272a3fccce43"
5045+
integrity sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q==
5046+
50185047
wcwidth@^1.0.1:
50195048
version "1.0.1"
50205049
resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8"

ios/Fabric/RNCPagerViewComponentView.mm

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,10 @@
1515

1616
using namespace facebook::react;
1717

18-
@interface RNCPagerViewComponentView () <RCTRNCViewPagerViewProtocol, UIPageViewControllerDataSource, UIPageViewControllerDelegate, UIScrollViewDelegate>
18+
@interface RNCPagerViewComponentView () <RCTRNCViewPagerViewProtocol, UIPageViewControllerDataSource, UIPageViewControllerDelegate, UIScrollViewDelegate, UIGestureRecognizerDelegate>
19+
20+
@property(nonatomic, assign) UIPanGestureRecognizer* panGestureRecognizer;
21+
1922
@end
2023

2124
@implementation RNCPagerViewComponentView {
@@ -63,6 +66,11 @@ - (instancetype)initWithFrame:(CGRect)frame
6366
_destinationIndex = -1;
6467
_layoutDirection = @"ltr";
6568
_overdrag = NO;
69+
UIPanGestureRecognizer* panGestureRecognizer = [UIPanGestureRecognizer new];
70+
self.panGestureRecognizer = panGestureRecognizer;
71+
panGestureRecognizer.delegate = self;
72+
[self addGestureRecognizer: panGestureRecognizer];
73+
6674
}
6775

6876
return self;
@@ -398,6 +406,29 @@ + (ComponentDescriptorProvider)componentDescriptorProvider
398406
}
399407

400408

409+
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
410+
411+
// Recognize simultaneously only if the other gesture is RN Screen's pan gesture (one that is used to perform fullScreenGestureEnabled)
412+
if (gestureRecognizer == self.panGestureRecognizer && [NSStringFromClass([otherGestureRecognizer class]) isEqual: @"RNSPanGestureRecognizer"]) {
413+
UIPanGestureRecognizer* panGestureRecognizer = (UIPanGestureRecognizer*) gestureRecognizer;
414+
CGPoint velocity = [panGestureRecognizer velocityInView:self];
415+
BOOL isLTR = [self isLtrLayout];
416+
BOOL isBackGesture = (isLTR && velocity.x > 0) || (!isLTR && velocity.x < 0);
417+
418+
if (self.currentIndex == 0 && isBackGesture) {
419+
scrollView.panGestureRecognizer.enabled = false;
420+
} else {
421+
const auto &viewProps = *std::static_pointer_cast<const RNCViewPagerProps>(_props);
422+
scrollView.panGestureRecognizer.enabled = viewProps.scrollEnabled;
423+
}
424+
425+
return YES;
426+
}
427+
const auto &viewProps = *std::static_pointer_cast<const RNCViewPagerProps>(_props);
428+
scrollView.panGestureRecognizer.enabled = viewProps.scrollEnabled;
429+
return NO;
430+
}
431+
401432
@end
402433

403434
Class<RCTComponentViewProtocol> RNCViewPagerCls(void)

0 commit comments

Comments
 (0)