Skip to content

Commit 0094584

Browse files
committed
refactor: rename allowNavFullscreenGesture to allowNavigationBackGesture for clarity and consistency and remove unnecessary properties
1 parent 8f06486 commit 0094584

4 files changed

Lines changed: 27 additions & 31 deletions

File tree

README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ For advanced usage please take a look into our [example project](https://github.
163163
| `offscreenPageLimit: number` | Set the number of pages that should be retained to either side of the currently visible page(s). Pages beyond this limit will be recreated from the adapter when needed. Defaults to RecyclerView's caching strategy. The given value must either be larger than 0. | Android |
164164
| `overdrag: boolean` | Allows for overscrolling after reaching the end or very beginning or pages. Defaults to `false` | iOS |
165165
| `layoutDirection: ('ltr' / 'rtl' / 'locale')` | Specifies layout direction. Use `ltr` or `rtl` to set explicitly or `locale` to deduce from the default language script of a locale. Defaults to `locale` | both |
166-
| `allowNavFullscreenGesture: boolean` | Allows navigation swipe-back gestures to pass through when PagerView is at index 0. If `overdrag` is set to `true`, it will have higher priority. Defaults to `false` | iOS |
166+
| `allowNavigationBackGesture: boolean` | Allows navigation swipe-back gestures to pass through when PagerView is at index 0. If `overdrag` is set to `true`, it will have higher priority. Defaults to `false` | iOS |
167167

168168
| Method | Description | Platform |
169169
| ------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------: |
@@ -243,6 +243,7 @@ const pageScrollHandler = usePageScrollHandler({
243243
```
244244

245245
## usePagerView Hook Usage
246+
246247
The `usePagerView` hook is a convenient way to manage the state and control the behavior of the `<PagerView />` component. It provides functions and variables to interact with the pager, such as navigating between pages and enabling/disabling scrolling.
247248

248249
Below is an example of how to use the usePager hook:
@@ -295,7 +296,8 @@ export function PagerHookExample() {
295296
);
296297
}
297298
```
298-
### How the Example Works:
299+
300+
### How the Example Works
299301

300302
- **Pager View Setup**: The `AnimatedPagerView` component wraps `PagerView` in React Native's animation capabilities. It accepts multiple props from the `usePager` hook, such as `overdragEnabled`, `scrollEnabled`, `onPageScroll`, `onPageSelected`, and others to manage pager behavior.
301303

@@ -305,7 +307,6 @@ export function PagerHookExample() {
305307

306308
The `usePager` hook makes it easy to handle pagination with dynamic views. This example demonstrates how to set up a simple paginated interface where users can scroll through pages, interact with page elements, and control the pager with external navigation.
307309

308-
309310
## License
310311

311312
MIT

android/src/main/java/com/reactnativepagerview/PagerViewViewManager.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,8 +163,8 @@ class PagerViewViewManager : ViewGroupManager<NestedScrollableHost>(), RNCViewPa
163163
}
164164
}
165165

166-
@ReactProp(name = "allowNavFullscreenGesture")
167-
override fun setAllowNavFullscreenGesture(view: NestedScrollableHost?, value: Boolean) {
166+
@ReactProp(name = "allowNavigationBackGesture")
167+
override fun setAllowNavigationBackGesture(view: NestedScrollableHost?, value: Boolean) {
168168
return
169169
}
170170

ios/RNCPagerViewComponentView.mm

Lines changed: 20 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,7 @@ @implementation RNCPagerViewComponentView {
2828
NSInteger _destinationIndex;
2929
BOOL _overdrag;
3030
NSString *_layoutDirection;
31-
BOOL _isDragging;
32-
BOOL _allowNavFullscreenGesture;
31+
BOOL _allowNavigationBackGesture;
3332
UIPanGestureRecognizer *_navGestureRecognizer;
3433
}
3534

@@ -79,8 +78,7 @@ - (instancetype)initWithFrame:(CGRect)frame
7978
_destinationIndex = -1;
8079
_layoutDirection = @"ltr";
8180
_overdrag = NO;
82-
_isDragging = NO;
83-
_allowNavFullscreenGesture = NO;
81+
_allowNavigationBackGesture = NO;
8482
_navGestureRecognizer = nil;
8583
}
8684

@@ -95,16 +93,16 @@ - (void)willMoveToSuperview:(UIView *)newSuperview {
9593
}
9694

9795
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
98-
if (!_allowNavFullscreenGesture) {
96+
if (!_allowNavigationBackGesture) {
9997
return NO;
10098
}
10199

102100
if (otherGestureRecognizer == self->scrollView.panGestureRecognizer) {
103-
UIPanGestureRecognizer* p = (UIPanGestureRecognizer*) gestureRecognizer;
104-
CGPoint velocity = [p velocityInView:self];
105-
BOOL shouldPagerGestureFail = !_overdrag && !_isDragging && _currentIndex == 0 && velocity.x > 0;
101+
UIPanGestureRecognizer* panGestureRecognizer = (UIPanGestureRecognizer*) gestureRecognizer;
102+
CGPoint velocity = [panGestureRecognizer velocityInView:self];
103+
BOOL shouldPagerGestureFail = !_overdrag && !scrollView.isDecelerating && _currentIndex == 0 && velocity.x > 0;
106104
if (shouldPagerGestureFail) {
107-
self->scrollView.panGestureRecognizer.enabled = false;
105+
self->scrollView.panGestureRecognizer.enabled = NO;
108106
return NO;
109107
} else {
110108
self->scrollView.panGestureRecognizer.enabled = self->scrollView.scrollEnabled;
@@ -148,16 +146,12 @@ -(void)updateLayoutMetrics:(const facebook::react::LayoutMetrics &)layoutMetrics
148146
[super updateLayoutMetrics:layoutMetrics oldLayoutMetrics:_layoutMetrics];
149147
}
150148

151-
152149
-(void)prepareForRecycle {
153150
[super prepareForRecycle];
154151
_nativePageViewController = nil;
155152
_currentIndex = -1;
156-
_allowNavFullscreenGesture = NO;
157-
if (_navGestureRecognizer) {
158-
[self removeGestureRecognizer:_navGestureRecognizer];
159-
_navGestureRecognizer = nil;
160-
}
153+
_allowNavigationBackGesture = NO;
154+
[self cleanupGestureRecognizer];
161155
}
162156

163157
- (void)shouldDismissKeyboard:(RNCViewPagerKeyboardDismissMode)dismissKeyboard {
@@ -205,19 +199,15 @@ - (void)updateProps:(const facebook::react::Props::Shared &)props oldProps:(cons
205199
_overdrag = newScreenProps.overdrag;
206200
}
207201

208-
if (newScreenProps.allowNavFullscreenGesture != _allowNavFullscreenGesture) {
209-
_allowNavFullscreenGesture = newScreenProps.allowNavFullscreenGesture;
202+
if (newScreenProps.allowNavigationBackGesture != _allowNavigationBackGesture) {
203+
_allowNavigationBackGesture = newScreenProps.allowNavigationBackGesture;
210204

211-
if (_allowNavFullscreenGesture) {
205+
if (_allowNavigationBackGesture) {
212206
_navGestureRecognizer = [[UIPanGestureRecognizer alloc] init];
213207
_navGestureRecognizer.delegate = self;
214208
[self addGestureRecognizer:_navGestureRecognizer];
215-
_isDragging = NO;
216209
} else {
217-
if (_navGestureRecognizer) {
218-
[self removeGestureRecognizer:_navGestureRecognizer];
219-
_navGestureRecognizer = nil;
220-
}
210+
[self cleanupGestureRecognizer];
221211
}
222212
}
223213

@@ -312,7 +302,6 @@ - (UIViewController *)currentlyDisplayed {
312302
#pragma mark - UIScrollViewDelegate
313303

314304
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
315-
_isDragging = YES;
316305
const auto eventEmitter = [self pagerEventEmitter];
317306
eventEmitter->onPageScrollStateChanged(RNCViewPagerEventEmitter::OnPageScrollStateChanged{.pageScrollState = RNCViewPagerEventEmitter::OnPageScrollStateChangedPageScrollState::Dragging });
318307
}
@@ -339,7 +328,6 @@ - (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoi
339328
}
340329

341330
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
342-
_isDragging = NO;
343331
const auto eventEmitter = [self pagerEventEmitter];
344332
eventEmitter->onPageScrollStateChanged(RNCViewPagerEventEmitter::OnPageScrollStateChanged{.pageScrollState = RNCViewPagerEventEmitter::OnPageScrollStateChangedPageScrollState::Idle });
345333
}
@@ -457,6 +445,13 @@ - (BOOL)isLtrLayout {
457445
return [_layoutDirection isEqualToString: @"ltr"];
458446
}
459447

448+
- (void)cleanupGestureRecognizer {
449+
if (_navGestureRecognizer) {
450+
[self removeGestureRecognizer:_navGestureRecognizer];
451+
_navGestureRecognizer = nil;
452+
}
453+
}
454+
460455
- (std::shared_ptr<const RNCViewPagerEventEmitter>)pagerEventEmitter
461456
{
462457
if (!_eventEmitter) {

src/PagerViewNativeComponent.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export interface NativeProps extends ViewProps {
3333
overScrollMode?: WithDefault<'auto' | 'always' | 'never', 'auto'>;
3434
overdrag?: WithDefault<boolean, false>;
3535
keyboardDismissMode?: WithDefault<'none' | 'on-drag', 'none'>;
36-
allowNavFullscreenGesture?: WithDefault<boolean, false>;
36+
allowNavigationBackGesture?: WithDefault<boolean, false>;
3737
onPageScroll?: DirectEventHandler<OnPageScrollEventData>;
3838
onPageSelected?: DirectEventHandler<OnPageSelectedEventData>;
3939
onPageScrollStateChanged?: DirectEventHandler<OnPageScrollStateChangedEventData>;

0 commit comments

Comments
 (0)