add delegate function for interactiveTransitionGetCanceled
This commit is contained in:
parent
d3b078e984
commit
46f7c46b1a
@ -250,8 +250,7 @@
|
||||
|
||||
- (nullable id <UIViewControllerInteractiveTransitioning>)navigationController:(UINavigationController *)navigationController interactionControllerForAnimationController:(id<UIViewControllerAnimatedTransitioning>)animationController {
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(navigationController:interactionControllerForAnimationController:)]) {
|
||||
id interactiveTransitioning = [self.delegate navigationController:navigationController interactionControllerForAnimationController:animationController];
|
||||
return interactiveTransitioning;
|
||||
return [self.delegate navigationController:navigationController interactionControllerForAnimationController:animationController];
|
||||
} else {
|
||||
return nil;
|
||||
}
|
||||
@ -259,12 +258,18 @@
|
||||
|
||||
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context {
|
||||
if ([keyPath isEqualToString:@"interactiveTransitionCanceled"]) {
|
||||
[object removeObserver:self forKeyPath:@"interactiveTransitionCanceled"];
|
||||
BOOL transitionCanceled = ((NSNumber*)change[NSKeyValueChangeNewKey]).boolValue;
|
||||
if (transitionCanceled) {
|
||||
//When interactive transition canceled, the destination viewController should be removed from navigationController
|
||||
[self.navigationObject.viewController removeFromParentViewController];
|
||||
[self markAsFinished];
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(navigationController:interactiveTransitionGetCanceled:)]) {
|
||||
[self.delegate navigationController:self.navigationObject.navigationController interactiveTransitionGetCanceled: true];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
[super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -19,6 +19,10 @@
|
||||
// Called when a view controller has been displayed on a navigation controller
|
||||
- (void)navigationController:(nonnull UINavigationController *)navigationController displayedViewController:(nonnull UIViewController *)viewController;
|
||||
|
||||
// Called when interactive transition get canceled
|
||||
- (void)navigationController:(nonnull UINavigationController *)navigationController interactiveTransitionGetCanceled:(BOOL)canceled;
|
||||
|
||||
|
||||
- (nullable id <UIViewControllerAnimatedTransitioning>)navigationController:(nonnull UINavigationController *)navigationController
|
||||
animationControllerForOperation:(UINavigationControllerOperation)operation
|
||||
fromViewController:(nonnull UIViewController *)fromVC
|
||||
|
||||
Loading…
Reference in New Issue
Block a user