我遇到问题,contentInset
无法使UIScrollView使用键盘弹出窗口。 有点有效:出于某种原因,我需要大量数字(可能高于视图的高度?)才能执行任何操作,尽管contentInset
的所有文档都显示了40.0
这样的小数字(例如,对于条形图)或键盘高度。
我通过以下步骤在全新的应用程序中重现了这个问题:
以下是ViewController的代码:
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
@end
@implementation ViewController
- (IBAction)button:(id)sender {
self.scrollView.contentInset = UIEdgeInsetsMake(0.0, 0.0, 600, 0.0);
}
@end
我缺少什么/为什么我需要大数字?
答案 0 :(得分:13)
检查 self.scrollView.contentSize
是否设置正确。如果 contentSize.height
为0(将按照您的步骤进行操作),则需要大量插入。
尝试将 [self.scrollView setContentSize: CGSizeMake(320, 568)];
添加到按钮方法中,您会注意到您的插图现在将按预期运行。
答案 1 :(得分:3)
马特是对的,它与contentSize
有关。我正在使用自动布局,对我来说缺少的链接是显式设置scrollView的viewDidLayoutSubviews
属性与我的contentView的帧大小相同(contentView是我的scrollView中包含所有其他视图的视图)。我的contentView被编码为基于我放置的元素的大小。它们“推出”了contentView,因此动态地驱动了contentView的大小。这是scrollView.contentSize
中的“最后一步”,我将此动态大小链接到// Auto Layout Solution
- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
self.scrollView.contentSize = self.contentView.frame.size;
}
。现在事情按预期工作了。
{{1}}
答案 2 :(得分:1)
就我而言,我忘了在界面生成器中连接ScrollView ......
答案 3 :(得分:0)
使用带约束的自动布局时,我遇到了同样的问题。滚动视图拒绝与contentInset一起移动,直到我在keyboardWillShow的末尾添加了以下行,然后一切正常。如上所述,我怀疑自动布局会重置contentSize。
scrollView.contentSize = CGSize(width: scrollView.frame.width, height: scrollView.frame.height)