Closed JazzHunter closed 4 years ago
我更新了仓库代码和文档,手势处理文档
你先自测一下,没有问题,我再打包。
你好,我试了一下,不过没成功,可能是我没用对。
1、- (Class)scrollViewClassInlistContainerViewInPagerView:(JXPagerView )pagerView
这个方法应该是写在
我用的是OC版本。多谢帮忙指导一下🙏
1.- (Class)scrollViewClassInlistContainerViewInPagerView:(JXPagerView *)pagerView
只是一个代理方法,初始化的时候会调用一次。返回你自定义一个类,继承UIScrollView。
2.demo我没有写全面屏手势兼容代码,所以你搜索不到。
3.if (collectionView.contentOffset.x <= 0)
就是说scrollView滚动到了最左边才会响应。
新版的手势处理确实有问题,而且处理起来很麻烦, 1、首先要subclass JXPagerView,因为JXPagerListContainer代理设置的JXPagerView, 在外部无法使用(Class)scrollViewClassInlistContainerView:指定自定义类。这需要你自己使用时用自定义的pagerView类。比较简单的办法是直接categoryJXPagerView,实现(Class)scrollViewClassInlistContainerView:,但这样你还不能让分类遵循JXPagerViewListViewDelegate,只能直接写个(Class)scrollViewClassInlistContainerView方法扔里面。 2、其次,当你通过(Class)scrollViewClassInlistContainerView自定义scrollview类时,你会发现categoryNestPagingEnabled失效了,因为默认的scrollview类是作者自定义的,里面是有逻辑的,当你使用自己的代替时,该逻辑丢失了。希望作者改回1.xx的方式。 @pujiaxin33
感谢pujiaxin33。我花了几天时间使劲研究了下源码,解决了,哈哈。只是我改了挺多的,暴露了很多作者原来没有暴露出来的变量,就不说细节了。 作者整个库的思路特别好,针对于不同的应用场景写了不同的内容,包括刷新什么的,学习了很多。 前几天我自己问的问题其实挺不合适的……确实应该多看源码搞懂原理 小小的建议:协议太多了,初次接触记不住,用block会不会好一些 总之,特别感谢作者🙏🙏🙏🙏
@zhengziyan19 @JazzHunter 我在新版本添加了【全面屏手势兼容处理】示例,主要之前内部有一个小bug导致现在的方案没有生效。你们可以下最新示例看看。
@zhengziyan19 如果你既要支持全面屏手势,又要支持cateogyView嵌套paingView,自己把JXPagerListContainerScrollView类的里面的gestureRecognizerShouldBegin方法复制到自定义类里面即可。
@zhengziyan19 至于为什么不想改回1.x的版本,主要因为之前的方案太死了。你自定义scrollView就可以完成各种你想实现的效果。
预计今天能出个2.0.3的版本,到时候用这个版本,又可以愉快的和全面屏手势相处了。
@JazzHunter 因为一个小bug导致现有方案没有生效。你自己看源码研究的精神非常赞👍
我的意思是FDGes的处理改回之前的方案,不是整个库。昨天研究了下,基本上我已经满足了我的需求。但个人觉的需要改动源码对库引用太不友好了。所以才希望已经考虑到的功能,最好支持友好一点,比如在JXPagerViewDelegate里可以配置- (Class)scrollViewClassInlistContainerView,JXPagerListContainerCollectionView 暴漏一下,以便使用者继承。最后附一下我目前想到在不改源码的前提下想到的最简的解决方案。
@interface ZHPageScroolView : UIScrollView
@implementation ZHPageScroolView
(BOOL)gestureRecognizer:(UIGestureRecognizer )gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer )otherGestureRecognizer {
if (self.contentOffset.x <= 0) { if ([otherGestureRecognizer.delegate isKindOfClass:NSClassFromString(@"_FDFullscreenPopGestureRecognizerDelegate")]) { return YES; } } return NO; }
@end
@interface ZHPageCollectionView : UICollectionView
@end
@implementation ZHPageCollectionView
(BOOL)gestureRecognizer:(UIGestureRecognizer )gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer )otherGestureRecognizer {
if (self.contentOffset.x <= 0) { if ([otherGestureRecognizer.delegate isKindOfClass:NSClassFromString(@"_FDFullscreenPopGestureRecognizerDelegate")]) { return YES; } } return NO; }
@end
@implementation JXPagerView (FDGes)
////// 重写listContainerView的scroolview类
(Class)scrollViewClassInlistContainerView:(JXPagerListContainerView *)listContainerView {
if (listContainerView.containerType == JXPagerListContainerType_ScrollView) { class_setSuperclass(ZHPageScroolView.class, NSClassFromString(@"JXPagerListContainerScrollView")); return [ZHPageScroolView class]; }else{ class_setSuperclass(ZHPageCollectionView.class, NSClassFromString(@"JXPagerListContainerCollectionView")); return [ZHPageCollectionView class]; } }
@end
感谢建议,只是觉得,把JXPagerListContainerCollectionView暴露出来有点冗余了。先就这样吧。你的这个class_setSuperclass方法很骚,第一次看到。
您好:请教个问题,就是关于全屏手势返回,我这里使用的FDFullscreenPopGesture,您也写了说明,如果需要兼容需要遵从JXPagerListContainerCollectionViewGestureDelegate协议实现相关方法。但是JXPagerListContainerCollectionViewGestureDelegate协议应该是1.X版本的,我看您2.0里面,pagingView已经用scrollview替代了collectionView,这个协议在我现在使用的版本(2.0.1,2.0.2)里面已经找不到了
不知道在2.0.2版本里面,如何实现全屏手势兼容呢?
感谢~