UIScrollView在自动布局打开时不在iOS7中滚动

我有一个UIScrollView,里面有6个文本字段,里面有一个按钮。 scrollView中没有足够的内容使其滚动。

但是当键盘显示时,我希望滚动视图滚动,这样用户就不必关闭键盘以选择键盘隐藏的另一个文本字段。

我正在使用iOS7并启用了autolayout。

有什么建议么?

我正在使用故事板,我所拥有的唯一代码如下。

reg.h文件

interface registerViewController : UIViewController  

为了使滚动视图可滚动,内容大小必须大于scrollview的框架,因此scrollview有滚动到的内容。 使用setContentSize调整内容大小:

 [scrollview setContentSize:CGSizeMake(width, height)]; 

在这种情况下,您应该调整view.frame.width,view.frame.height + keyboard_height的大小,然后在键盘出现后调整内容偏移量:

 [scrollview setContentOffset:CGPointMake(0, 0 - keyboard_height)]; 

如果对于一些棘手的,与autolayout相关的原因,这仍然不能使视图可滚动,请在viewDidLayoutSubviews中实现此setContentSize函数以覆盖autolayout:

 - (void)viewDidLayoutSubviews { [scrollview setContentSize:CGSizeMake(width, height)]; } 

编辑:要在解除键盘后重置滚动视图,请将scrollview内容大小重置为scrollview的帧并将偏移量重置为零:

 [scrollview setContentSize:CGSizeMake(scrollview.frame.size.width, scrollview.frame.size.height)]; [scrollview setContentOffset:CGPointZero]; 

PS要为内容偏移设置动画,请使用:

 [scrollview setContentOffset:offsetSize animated:YES]; 

UIScrollViews有一个contentInset属性,您可以设置contentInset以在底部创建额外的空间以允许滚动而不更改contentSize。

 UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, 100, 0.0); scrollView.contentInset = contentInsets; 

上面的代码在底部添加了100点插入。

顺便说一下,有关于此事的官方文件。 它解释了你应该做的一切。 你可以在这里找到它。 您可以在“移动位于键盘下方的内容”部分找到您要查找的内容

尝试

  1. 创建滚动视图
  2. 将视图添加到滚动视图(在我的情况下,我将视图添加为mainView)。
  3. 设置ScrollView自动resize 。
  4. 设置MainView自动resize 。

  5. 要将Scroll内容大小设置为等于创建的视图,请添加以下行

添加以下行

 -(void)viewDidLayoutSubviews { [super viewDidLayoutSubviews]; self.scrollView.contentSize = self.mainView.frame.size; }