我的UIScrollview很长,超出了屏幕的宽度。请参阅以下屏幕截图以供参考。
我在动态变化的for循环中以编程方式向此scrollview添加按钮。有一个“containerView”基本上与scrollview的宽度相同,我实际上是将按钮直接添加到它上面。代码很简单,如下所示:
for (int i=0; i<numberOfButtons; i++) {
UIButton *currentButton = [[UIButton alloc] init];
[currentButton setTranslatesAutoresizingMaskIntoConstraints:NO];
[currentButton setBackgroundImage:buttonImage forState:UIControlStateNormal];
[currentButton setTag:i];
[currentButton addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
[self.containerView addSubview:currentButton];
// here's where I programatically set constraints for positioning
}
按钮在正确的位置显示完美,并且最初在屏幕上的按钮(即上面屏幕截图示例中的前2个)激活“buttonPressed:”方法完全正常。但是,最初屏幕外的屏幕仍显示正常,但点击时不会触发事件。
我在那里看到其他类似的帖子,但似乎没有任何效果。关于这个去哪里的任何想法?我有点难过。提前谢谢!
答案 0 :(得分:1)
这个问题的答案正是rdelmar在评论中指出的。 containerView的框架被设置为屏幕大小的边界,所以当我将背景颜色更改为白色时,很明显边界限制在初始屏幕宽度。
修复非常简单 - 一旦for循环完成,我就知道了containerView需要多长时间,所以我只需将框架设置为适当的宽度。问题已解决!
答案 1 :(得分:0)
在for循环之后,您需要确保设置scrollview的内容大小
[self.containerView setContentSize:CGSizeMake(MAX_X_FROM_LAST_BUTTON, self.containerView.frame.size.height)];