ios - UIScrollView 在 iOS7 中不滚动自动布局

标签 ios objective-c uiscrollview

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

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

我使用的是 iOS7 并启用了自动布局。

有什么建议吗?

我正在使用 Storyboard,我仅有的代码如下。

reg.h文件

interface registerViewController : UIViewController <UITextFieldDelegate, UIScrollViewDelegate>

最佳答案

为了使 ScrollView 可滚动,内容大小必须大于 ScrollView 的框架,这样 ScrollView 才能滚动到某些地方。使用 setContentSize 调整内容大小:

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

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

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

如果出于某些与自动布局相关的棘手原因,这仍然不能使 View 可滚动,请在 viewDidLayoutSubviews 中实现此 setContentSize 函数以覆盖自动布局:

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

编辑:要在关闭键盘后重置 ScrollView ,请将 ScrollView 内容大小重置为 ScrollView 的框架并将偏移量重置为零:

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

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

[scrollview setContentOffset:offsetSize animated:YES];

关于ios - UIScrollView 在 iOS7 中不滚动自动布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20317980/

相关文章:

iphone - 如何 NSLog ASCII 无限符号?

ios - NSDictionary 在 IOS/Objective c 中显示为 nil

iphone - UIScrollView滚动检测

ios - 将容器 View 嵌入 UIScrollView

ios - 如何以编程方式更改添加到 iOS 上的 NIB 的 UIButton 的背景图像?

objective-c - iOS 中带有结构的 XML-RPC 请求

ios - 如何保存NSMutableArray来解析?

objective-c - 为什么我的NSArray被释放?

iphone - iOS 上的圆形按钮

ios - 为什么在我的 ScrollView 中添加 subview 时会出现不需要的动画?