所以我试图让一个简单的UIScrollView使用一堆按钮。我使用以下代码成功完成了这项任务:
- (void)viewDidLoad
{
[super viewDidLoad];
[_scroller setScrollEnabled:YES];
[_scroller setContentSize:CGSizeMake(320, 1487)];
UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(0, -500, 320, 2800)];
[imgView setBackgroundColor:[UIColor blackColor]];
[_scroller addSubview:imgView];
UIButton *btn1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[btn1 setTitle:@"Cool title" forState:UIControlStateNormal];
[btn1 setFrame:CGRectMake(7, 7, 150, 160)];
[btn1 setImage:[UIImage imageNamed:@"small.png"] forState:UIControlStateNormal];
[btn1 addTarget:self action:@selector(btn1_m) forControlEvents:UIControlEventTouchUpInside];
[_scroller addSubview:btn1];
但是,如果我通过界面构建器添加按钮而不是以编程方式添加按钮怎么办?每当我这样做时,滚动条不再滚动!
例如,如果我在控制拖动按钮后使用以下代码:
- (IBAction)theButton:(UIButton *)sender {
[_scroller addSubview:sender];
}
- (void)viewDidLoad
{
[super viewDidLoad];
[_scroller setScrollEnabled:YES];
[_scroller setContentSize:CGSizeMake(320, 1487)];
}
...滚动不起作用,我看到按钮但没有任何滚动。基本上,我只是想使用界面构建器向我的应用添加按钮并让它们滚动,但似乎无法让它工作!
答案 0 :(得分:0)
以编程方式创建UI时,滚动视图的子视图如下所示:
ImageView的
按钮
按钮
...
当您使用IB添加按钮时,您最终会得到:
按钮
按钮
...
ImageView的
将图像视图添加到滚动视图后放置断点。在LLDB控制台中输入:
(lldb)po _scroller.subviews
我怀疑您会在列表底部看到您的图片视图。它覆盖了你的按钮,但它是滚动的,它看起来不像它是一个大的黑色图像视图。
将图像视图发送到子视图列表的后面:
[_ scroller sendSubviewToBack:imgView];
然后你会再次看到你的按钮。 此外,完成此操作后,请在lldb中确认您的滚动视图内容大小:
(lldb)p _scroller.contentSize
如果一切看起来都正确,那就应该滚动。