更改NSLayoutConstraint高度常量会导致UIScrollView跳转

时间:2014-01-22 13:50:08

标签: ios objective-c uiscrollview

我有一个UIScrollView,其中有一系列垂直布置的单元格。滚动视图的contentSize由单元格NSLayoutConstraints确定。其中一个单元格有UICollectionView,允许添加电子邮件地址 - 例如Mail中的“收件人:”字段。最初,如果用户点击此字段,则移动滚动视图,使单元格位于滚动视图的顶部,键盘进入视图。随着电子邮件地址的添加,单元格的高度必须增加,因此单元格上的布局约束常量将调整为新的高度。

问题是,调整此约束会导致滚动视图突然滚动到顶部。相反,我希望它只是增长单元格,但保持contentOffset相同。

1 个答案:

答案 0 :(得分:0)

找到了这个解决方案。在编辑有问题的字段时设置布尔值,如果滚动视图移动,则立即将内容偏移重置为字段的y位置。似乎scrollViewDidScroll是唯一被调用的委托方法。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if (self.editingGuests) {
        scrollView.contentOffset = CGPointMake(scrollView.contentOffset.x, self.guestsCell.frame.origin.y);
    }
}

从我的测试中,这不会导致视觉问题。