zzyspace/ZYBannerView

banner不在window上的话pageControl会有问题

liyouleo911 opened this issue · 6 comments

您好,我发现如果点击某一张banner弹出一个窗口遮住当前view controller的话,

  • (void)collectionView:(UICollectionView *)collectionView didEndDisplayingCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath
    就不会被调用到了,但是collectionView还是在定时滚动的,这样当你回到banner所在的view controller时会出现page control和页面对不上的关系,要等自动滑倒下一张时才会修正过来。

是否考虑当点击某一张 banner 的时候, 手动停止定时器, 返回的时候再开启定时器?

后面可能考虑通过在 -scrollViewDidScroll: 中计算 scrollView 的 contentOffset 来做当前 item 的配置来计算 pageControl 的 currentPage

返回的时机不好判断啊

- (void)banner:(ZYBannerView *)banner didSelectItemAtIndex:(NSInteger)index
{
    [banner stopTimer];
    UIView *newWindow = [[UIView alloc] init];
    newWindow.dismissBlock = ^{
        [banner startTimer];
    };
    [newWindow show];
}

类似这样的可以吗

这样需要在所有可能的newWindow上都添加dismissBlock这个callback,自己的代码还好办,如果是第三方库提供的页面就改不了了

另外还有一个问题就是,如果一个页面同时有多个bannerView存在,你只暂停了其中一个还是不够的