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