From 0c54a441d706ba282897acf87579ee81a0d1604a Mon Sep 17 00:00:00 2001 From: tigerAndBull Date: Fri, 31 Dec 2021 18:43:32 +0800 Subject: [PATCH] fix: cancel intercept scroll view delegate when the view is animating --- .../TABAnimated/Control/TABFormAnimated.m | 14 -------------- .../TABAnimatedDemo.xcodeproj/project.pbxproj | 12 ++++++------ 2 files changed, 6 insertions(+), 20 deletions(-) diff --git a/TABAnimatedDemo/TABAnimated/Control/TABFormAnimated.m b/TABAnimatedDemo/TABAnimated/Control/TABFormAnimated.m index 27ef64d..c21681d 100755 --- a/TABAnimatedDemo/TABAnimated/Control/TABFormAnimated.m +++ b/TABAnimatedDemo/TABAnimated/Control/TABFormAnimated.m @@ -375,7 +375,6 @@ - (BOOL)scrollEnabled { - (void)tab_scrollViewDidScroll:(UIScrollView *)scrollView { TABFormAnimated *tabAnimated = (TABFormAnimated *)(scrollView.tabAnimated); - if (tabAnimated.isAnimating) return; id oldDelegate = tabAnimated.oldDelegate; SEL sel = @selector(scrollViewDidScroll:); ((void (*)(id, SEL, UIScrollView *))objc_msgSend)((id)oldDelegate, sel, scrollView); @@ -383,7 +382,6 @@ - (void)tab_scrollViewDidScroll:(UIScrollView *)scrollView { - (void)tab_scrollViewDidZoom:(UIScrollView *)scrollView { TABFormAnimated *tabAnimated = (TABFormAnimated *)(scrollView.tabAnimated); - if (tabAnimated.isAnimating) return; id oldDelegate = tabAnimated.oldDelegate; SEL sel = @selector(scrollViewDidZoom:); ((void (*)(id, SEL, UIScrollView *))objc_msgSend)((id)oldDelegate, sel, scrollView); @@ -392,7 +390,6 @@ - (void)tab_scrollViewDidZoom:(UIScrollView *)scrollView { // called on start of dragging (may require some time and or distance to move) - (void)tab_scrollViewWillBeginDragging:(UIScrollView *)scrollView { TABFormAnimated *tabAnimated = (TABFormAnimated *)(scrollView.tabAnimated); - if (tabAnimated.isAnimating) return; id oldDelegate = tabAnimated.oldDelegate; SEL sel = @selector(scrollViewWillBeginDragging:); ((void (*)(id, SEL, UIScrollView *))objc_msgSend)((id)oldDelegate, sel, scrollView); @@ -401,7 +398,6 @@ - (void)tab_scrollViewWillBeginDragging:(UIScrollView *)scrollView { // called on finger up if the user dragged. velocity is in points/millisecond. targetContentOffset may be changed to adjust where the scroll view comes to rest - (void)tab_scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset API_AVAILABLE(ios(5.0)) { TABFormAnimated *tabAnimated = (TABFormAnimated *)(scrollView.tabAnimated); - if (tabAnimated.isAnimating) return; id oldDelegate = tabAnimated.oldDelegate; SEL sel = @selector(scrollViewWillEndDragging:withVelocity:targetContentOffset:); ((void (*)(id, SEL, UIScrollView *, CGPoint, CGPoint *))objc_msgSend)((id)oldDelegate, sel, scrollView, velocity, targetContentOffset); @@ -410,7 +406,6 @@ - (void)tab_scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(C // called on finger up if the user dragged. decelerate is true if it will continue moving afterwards - (void)tab_scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { TABFormAnimated *tabAnimated = (TABFormAnimated *)(scrollView.tabAnimated); - if (tabAnimated.isAnimating) return; id oldDelegate = tabAnimated.oldDelegate; SEL sel = @selector(scrollViewDidEndDragging:willDecelerate:); ((void (*)(id, SEL, UIScrollView *, BOOL))objc_msgSend)((id)oldDelegate, sel, scrollView, decelerate); @@ -418,7 +413,6 @@ - (void)tab_scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:( - (void)tab_scrollViewWillBeginDecelerating:(UIScrollView *)scrollView { TABFormAnimated *tabAnimated = (TABFormAnimated *)(scrollView.tabAnimated); - if (tabAnimated.isAnimating) return; id oldDelegate = tabAnimated.oldDelegate; SEL sel = @selector(scrollViewWillBeginDecelerating:); ((void (*)(id, SEL, UIScrollView *))objc_msgSend)((id)oldDelegate, sel, scrollView); @@ -426,7 +420,6 @@ - (void)tab_scrollViewWillBeginDecelerating:(UIScrollView *)scrollView { - (void)tab_scrollViewDidEndDecelerating:(UIScrollView *)scrollView { TABFormAnimated *tabAnimated = (TABFormAnimated *)(scrollView.tabAnimated); - if (tabAnimated.isAnimating) return; id oldDelegate = tabAnimated.oldDelegate; SEL sel = @selector(scrollViewDidEndDecelerating:); ((void (*)(id, SEL, UIScrollView *))objc_msgSend)((id)oldDelegate, sel, scrollView); @@ -434,7 +427,6 @@ - (void)tab_scrollViewDidEndDecelerating:(UIScrollView *)scrollView { - (void)tab_scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView { TABFormAnimated *tabAnimated = (TABFormAnimated *)(scrollView.tabAnimated); - if (tabAnimated.isAnimating) return; id oldDelegate = tabAnimated.oldDelegate; SEL sel = @selector(scrollViewDidEndScrollingAnimation:); ((void (*)(id, SEL, UIScrollView *))objc_msgSend)((id)oldDelegate, sel, scrollView); @@ -442,7 +434,6 @@ - (void)tab_scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView { - (nullable UIView *)tab_viewForZoomingInScrollView:(UIScrollView *)scrollView { TABFormAnimated *tabAnimated = (TABFormAnimated *)(scrollView.tabAnimated); - if (tabAnimated.isAnimating) return nil; id oldDelegate = tabAnimated.oldDelegate; SEL sel = @selector(viewForZoomingInScrollView:); return ((UIView * (*)(id, SEL, UIScrollView *))objc_msgSend)((id)oldDelegate, sel, scrollView); @@ -450,7 +441,6 @@ - (nullable UIView *)tab_viewForZoomingInScrollView:(UIScrollView *)scrollView { - (void)tab_scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(nullable UIView *)view API_AVAILABLE(ios(3.2)) { TABFormAnimated *tabAnimated = (TABFormAnimated *)(scrollView.tabAnimated); - if (tabAnimated.isAnimating) return; id oldDelegate = tabAnimated.oldDelegate; SEL sel = @selector(scrollViewWillBeginZooming:withView:); ((void (*)(id, SEL, UIScrollView *, UIView *))objc_msgSend)((id)oldDelegate, sel, scrollView, view); @@ -458,7 +448,6 @@ - (void)tab_scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(null - (void)tab_scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(nullable UIView *)view atScale:(CGFloat)scale { TABFormAnimated *tabAnimated = (TABFormAnimated *)(scrollView.tabAnimated); - if (tabAnimated.isAnimating) return; id oldDelegate = tabAnimated.oldDelegate; SEL sel = @selector(scrollViewDidEndZooming:withView:atScale:); ((void (*)(id, SEL, UIScrollView *, UIView *, CGFloat))objc_msgSend)((id)oldDelegate, sel, scrollView, view, scale); @@ -466,7 +455,6 @@ - (void)tab_scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(nullabl - (BOOL)tab_scrollViewShouldScrollToTop:(UIScrollView *)scrollView { TABFormAnimated *tabAnimated = (TABFormAnimated *)(scrollView.tabAnimated); - if (tabAnimated.isAnimating) return NO; id oldDelegate = tabAnimated.oldDelegate; SEL sel = @selector(scrollViewShouldScrollToTop:); return ((BOOL (*)(id, SEL, UIScrollView *))objc_msgSend)((id)oldDelegate, sel, scrollView); @@ -474,7 +462,6 @@ - (BOOL)tab_scrollViewShouldScrollToTop:(UIScrollView *)scrollView { - (void)tab_scrollViewDidScrollToTop:(UIScrollView *)scrollView { TABFormAnimated *tabAnimated = (TABFormAnimated *)(scrollView.tabAnimated); - if (tabAnimated.isAnimating) return; id oldDelegate = tabAnimated.oldDelegate; SEL sel = @selector(scrollViewShouldScrollToTop:); ((void (*)(id, SEL, UIScrollView *))objc_msgSend)((id)oldDelegate, sel, scrollView); @@ -484,7 +471,6 @@ - (void)tab_scrollViewDidScrollToTop:(UIScrollView *)scrollView { */ - (void)tab_scrollViewDidChangeAdjustedContentInset:(UIScrollView *)scrollView API_AVAILABLE(ios(11.0), tvos(11.0)) { TABFormAnimated *tabAnimated = (TABFormAnimated *)(scrollView.tabAnimated); - if (tabAnimated.isAnimating) return; id oldDelegate = tabAnimated.oldDelegate; SEL sel = @selector(scrollViewDidChangeAdjustedContentInset:); ((void (*)(id, SEL, UIScrollView *))objc_msgSend)((id)oldDelegate, sel, scrollView); diff --git a/TABAnimatedDemo/TABAnimatedDemo.xcodeproj/project.pbxproj b/TABAnimatedDemo/TABAnimatedDemo.xcodeproj/project.pbxproj index 96f156b..22ebac4 100755 --- a/TABAnimatedDemo/TABAnimatedDemo.xcodeproj/project.pbxproj +++ b/TABAnimatedDemo/TABAnimatedDemo.xcodeproj/project.pbxproj @@ -2030,9 +2030,9 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = ""; - CODE_SIGN_IDENTITY = "iPhone Developer"; + CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2.6.2; + CURRENT_PROJECT_VERSION = 2.6.3; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = JGZKPAYJ7R; ENABLE_BITCODE = NO; @@ -2049,7 +2049,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 2.6.2; + MARKETING_VERSION = 2.6.3; OTHER_LDFLAGS = ( "-Xlinker", "-interposable", @@ -2066,9 +2066,9 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = ""; - CODE_SIGN_IDENTITY = "iPhone Developer"; + CODE_SIGN_IDENTITY = "Apple Development: Wenhu An (629MZJMJ23)"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2.6.2; + CURRENT_PROJECT_VERSION = 2.6.3; DEVELOPMENT_TEAM = JGZKPAYJ7R; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( @@ -2084,7 +2084,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 2.6.2; + MARKETING_VERSION = 2.6.3; OTHER_LDFLAGS = ( "-Xlinker", "-interposable",