我有一个动态UITableView,它会在点击按钮时插入和删除行。
-(IBAction)foldingClicked:(id)sender
{
self.isInfoFolded = !self.isInfoFolded;
if( self.isInfoFolded)
{
//self.mainTable remove rows
}else
{
//self.mainTable insert rows
}
}
我在scrollViewDidScroll:
-(void)scrollViewDidScroll:(UIScrollView*)scrollView
{
CGFloat main_offset = scrollView.contentOffset.y;
//animation
CGRect image_frame = self.imageView.frame;
if((main_offset >= 0 ) && (main_offset <= self.imageView.frame.size.height))
{
image_frame.origin.y = main_offset/2;
}else
{
image_frame.origin.y = image_frame.size.height/2;
}
}
它大部分工作正常。但是当我
结果:表格视图将向上滚动,因为减少的contentSize
也会使有效contentOffset
变小,在此过程中我的scrollViewDidScroll
方法不会被调用,这会导致动画不完整,并且imageView
在我的情况下处于错误的位置。
我尝试在删除行后立即调用scrollViewDidScroll:
。但是,scrollViewDidScroll:
仅调用一次,而contentOffset为&#39; 0&#39;在那执行。它不是逐渐下降到&#39; 0&#39; 。那么有没有什么方法可以像往常那样连续调用scrollViewDidScroll
?
答案 0 :(得分:1)
您应该使用UITableView
的消息
- (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated
或
- (void)scrollToNearestSelectedRowAtScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated
当您插入或删除行时。然后是消息
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
将自动调用。