我正在调整一个详细视图控制器的状态,就在它被推上一个navigationController : [self.detailViewController detailsForObject:someObject]; [self.navigationController pushViewController:self.detailViewController animated:YES]; 在DetailViewController的scrollView驻留。 我根据传递的对象调整了哪些内容: – (void)detailsForObject:(id)someObject { // set some textView's content here self.contentView.frame = <rect with new calculated size>; self.scrollView.contentSize = self.contentView.frame.size; self.scrollView.contentOffset = CGPointZero; } 现在,这一切工作,但scrollView在导航控制器的滑入animation中调整它的contentOffset 。 contentOffset将被设置为最后一个contentSize和新计算的之间的差异。 这意味着第二次打开detailsView时,细节会滚动到一些不需要的位置。 即使我明确地将contentOffset设置为CGPointZero 。 我发现在- viewWillAppear中重置contentOffset不起作用。 我能想到的最好的方法是重置viewDidAppear的contentOffset,从而引起内容的明显上下移动: – (void)viewDidAppear:(BOOL)animated { self.scrollView.contentOffset = CGPointZero; } 有没有一种方法来防止一个UIScrollView的contentSize更改时调整其contentOffset ?