我有一个 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/