Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 26 additions & 29 deletions Classes/Core/Controllers/FLEXNavigationController.m
Original file line number Diff line number Diff line change
Expand Up @@ -48,41 +48,35 @@ - (void)viewDidLoad {
[self.navigationBar addGestureRecognizer:navbarTapGesture];

// Add gesture to dismiss if not presented with a sheet style
if (@available(iOS 13, *)) {
switch (self.modalPresentationStyle) {
case UIModalPresentationAutomatic:
case UIModalPresentationPageSheet:
case UIModalPresentationFormSheet:
break;

default:
[self addNavigationBarSwipeGesture];
break;
}
} else {
[self addNavigationBarSwipeGesture];
switch (self.modalPresentationStyle) {
case UIModalPresentationAutomatic:
case UIModalPresentationPageSheet:
case UIModalPresentationFormSheet:
break;

default:
[self addNavigationBarSwipeGesture];
break;
}
}

- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];

if (@available(iOS 15.0, *)) {
UISheetPresentationController *presenter = self.sheetPresentationController;
presenter.detents = @[
UISheetPresentationControllerDetent.mediumDetent,
UISheetPresentationControllerDetent.largeDetent,
];
presenter.prefersScrollingExpandsWhenScrolledToEdge = NO;
presenter.selectedDetentIdentifier = UISheetPresentationControllerDetentIdentifierLarge;
presenter.largestUndimmedDetentIdentifier = UISheetPresentationControllerDetentIdentifierLarge;
}


UISheetPresentationController *presenter = self.sheetPresentationController;
presenter.detents = @[
UISheetPresentationControllerDetent.mediumDetent,
UISheetPresentationControllerDetent.largeDetent,
];
presenter.prefersScrollingExpandsWhenScrolledToEdge = NO;
presenter.selectedDetentIdentifier = UISheetPresentationControllerDetentIdentifierLarge;
presenter.largestUndimmedDetentIdentifier = UISheetPresentationControllerDetentIdentifierLarge;

if (self.beingPresented && !self.didSetupPendingDismissButtons) {
for (UIViewController *vc in self.viewControllers) {
[self addNavigationBarItemsToViewController:vc.navigationItem];
}

self.didSetupPendingDismissButtons = YES;
}
}
Expand Down Expand Up @@ -132,19 +126,22 @@ - (void)addNavigationBarItemsToViewController:(UINavigationItem *)navigationItem
return;
}

// Check if a done item already exists
// Check if a close/done item already exists (red tinted or xmark image)
for (UIBarButtonItem *item in navigationItem.rightBarButtonItems) {
if (item.style == UIBarButtonItemStyleDone) {
if ([item.tintColor isEqual:UIColor.systemRedColor] || item.image != nil) {
return;
}
}

// Give root view controllers a Done button if it does not already have one
UIImage *closeImage = [UIImage systemImageNamed:@"xmark"];
UIBarButtonItem *done = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemDone
initWithImage:closeImage
style:UIBarButtonItemStylePlain
target:self
action:@selector(dismissAnimated)
];
done.tintColor = UIColor.systemRedColor;

// Prepend the button if other buttons exist already
NSArray *existingItems = navigationItem.rightBarButtonItems;
Expand Down
Loading