为啥 setContentOffset 在 scrollViewDidEndDragging 方法中不起作用?

Posted

技术标签:

【中文标题】为啥 setContentOffset 在 scrollViewDidEndDragging 方法中不起作用?【英文标题】:Why setContentOffset does not work in scrollViewDidEndDragging method?为什么 setContentOffset 在 scrollViewDidEndDragging 方法中不起作用? 【发布时间】:2013-03-06 06:14:34 【问题描述】:

我想做一些类似于 Clear app 的事情:当您拖动到顶部时,会出现一个新单元格,并且它会保留在表格视图的顶部(我认为使用 setContentOffset)。问题是,当我尝试在方法 scrollViewDidEndDragging (或任何其他类似方法)中设置表格视图内容偏移量时,它不起作用。基本上内容偏移设置被忽略。我的代码是这样的:

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate 
    [_myTableView setContentOffset:CGPointMake(0, -100) animated:YES];

你能帮帮我吗?

【问题讨论】:

_myTableView 和 ScrollView 是不同的视图? 不,他们不是。 _myTableView 作为委托“自我”,所以这个方法应该识别它。 嗨。在***.com/a/27088865/1510171查看我的回答 【参考方案1】:

试试

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate    
    [_myTableView setContentOffset:CGPointMake(0, -100) animated:NO];

【讨论】:

内容偏移量暂时设置得很好,但它变得像以前一样:/【参考方案2】:

对于 Swift 3.0

DispatchQueue.main.async  in  
   _myTableView.setContentOffset(CGPoint(x: 0, y: -100), animated: true)  

【讨论】:

也可以使用scrollViewWillBeginDecelerating func 代替scrollViewDidEndDragging

以上是关于为啥 setContentOffset 在 scrollViewDidEndDragging 方法中不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

取消搜索时 setContentOffset 不正确

手动调用 UIRefreshControl 并使用 setContentOffset

使用 setContentOffSet 按钮滚动

iOS setContentOffset 在 ipad 上不起作用

UITableView, setContentOffset 动画:NO 不会在 iPad 上滚动

动画时UIScrollView setContentOffset?