【发布时间】:2013-12-30 00:24:13
【问题描述】:
我有一个很长的 UIScrollview,超过了屏幕的宽度。请参阅下面的屏幕截图以供参考。
我以编程方式在动态变化的 for 循环中向此滚动视图添加按钮。有一个“containerView”,它基本上与滚动视图的宽度相同,我实际上是直接在上面添加按钮。那里的代码非常简单,如下所示:
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:”方法。但是,最初不在屏幕上的那些仍然显示正常,但在点击时不会触发事件。
我在那里看到了其他类似的帖子,但似乎没有任何效果。关于这个去哪里的任何想法?我有点难过。提前致谢!
【问题讨论】:
-
按钮是否进入高亮状态?
-
好问题,当我按下它们时,最初出现在屏幕上的确实会进入高亮状态,但屏幕外的则不会。
-
这通常是由于按钮超出了它们的超级视图的范围造成的。你应该给 containerView 一个背景颜色,看看这是否属实。
-
宾果游戏!我将 containerView 的背景设置为白色,瞧,当我向右滚动时,白色在屏幕边缘的确切位置结束。现在我需要找到一个修复程序来适当地调整这个大小。感谢您对此的回答!
标签: ios iphone objective-c uiscrollview