为了使滚动视图可滚动,内容大小必须大于滚动视图的框架,以便滚动视图可以滚动到。使用 setContentSize 调整内容大小:
[scrollview setContentSize:CGSizeMake(width, height)];
在这种情况下,你应该将大小调整为view.frame.width,view.frame.height + keyboard_height,然后在键盘出现后调整内容偏移:
[scrollview setContentOffset:CGPointMake(0, 0 - keyboard_height)];
如果由于某些与自动布局相关的奇怪原因,这仍然无法使视图可滚动,请在 viewDidLayoutSubviews 中实现此 setContentSize 函数以覆盖自动布局:
- (void)viewDidLayoutSubviews {
[scrollview setContentSize:CGSizeMake(width, height)];
}
编辑:要在关闭键盘后重置滚动视图,请将滚动视图内容大小重置为滚动视图的框架,并将偏移量重置为零:
[scrollview setContentSize:CGSizeMake(scrollview.frame.size.width, scrollview.frame.size.height)];
[scrollview setContentOffset:CGPointZero];
附:要为内容偏移设置动画,请使用:
[scrollview setContentOffset:offsetSize animated:YES];