UITableView 上的水平滚动正在改变 UIPageControl 的位置,该 UIPageControl 附加到 TableView 单元格内的滚动视图

Posted

技术标签:

【中文标题】UITableView 上的水平滚动正在改变 UIPageControl 的位置,该 UIPageControl 附加到 TableView 单元格内的滚动视图【英文标题】:Scrolling horizantal on UITableView is changing the position of the UIPageControl which is attached to a scrollView inside the TableView cell 【发布时间】:2014-06-18 14:03:35 【问题描述】:

我有一个带有动态生成的自定义单元格的 tableView,其中一个自定义单元格包含一个可以垂直滚动的 scrollView,并且附加了一个页面控件。

tableview的用户界面结构见照片。

我在scrollViewDidScroll方法中刷新页面控件的位置如下。

    - (void)scrollViewDidScroll:(UIScrollView *)scrollView


    NSIndexPath *indexPathPageControl=[NSIndexPath indexPathForRow:0 inSection:0];
    UITableViewCell * cell = (UITableViewCell*)[self.sonDakikaTableView cellForRowAtIndexPath:indexPathPageControl];


    CGFloat xOffset = scrollView.contentOffset.x;
    CGFloat frameWidth = scrollView.frame.size.width;



    int page = floor((xOffset - frameWidth / 2) / frameWidth) + 1;

    UIPageControl *pageControl = (UIPageControl *)[cell.contentView  viewWithTag:14];
    pageControl.currentPage = page; // assigning to pagecontroll



当用户在 scrollView 中垂直滚动时,它工作得很好。

但是,当用户在 tableView 上向下滚动并且垂直 scrollView 的单元格不再可见时,整数页面变量正在更新为 0,并且当用户向上滚动并且表格视图单元格再次可见时,页面的位置正在重置控件。

如果有人能告诉我如何预防这种情况,我将不胜感激。

提前致谢。

【问题讨论】:

【参考方案1】:

我添加了这段代码

(void)scrollViewDidScroll:(UIScrollView *)_scrollView if (_scrollView == self.tableView) 返回; 在你的情况下

(void)scrollViewDidScroll:(UIScrollView *)_scrollView if (_scrollView == self.sonDakikaTableView) 返回;

【讨论】:

以上是关于UITableView 上的水平滚动正在改变 UIPageControl 的位置,该 UIPageControl 附加到 TableView 单元格内的滚动视图的主要内容,如果未能解决你的问题,请参考以下文章

如何让 UI 组件与我的 UITableView 一起滚动

UITableView contentInset 使表格视图除了垂直滚动外还水平滚动

UITableView 的水平移动?

UITableView 在水平滚动后不会响应点击

如何使 UITableView 水平和垂直滚动

UITableView 水平滚动指示器