ios - UIScrollview - 屏幕外按钮不触发

标签 ios iphone objective-c uiscrollview

我的 UIScrollview 很长,超过了屏幕的宽度。请参阅下面的屏幕截图以供引用。

example drawing

我正在动态变化的 for 循环中以编程方式向此 ScrollView 添加按钮。有一个基本上与 ScrollView 宽度相同的“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
}

按钮在正确的位置显示得非常好,最初出现在屏幕上的按钮(即上面截图示例中的前两个按钮)完美地触发了“buttonPressed:”方法。但是,最初在屏幕外的那些仍然可以正常显示,但点击时不会触发该事件。

我看到其他类似的帖子,但似乎没有任何效果。关于在何处进行此操作的任何想法?我有点难过。提前致谢!

最佳答案

事实证明,这个问题的答案正是 rdelmar 在他的评论中所指出的。 containerView 的框架被设置为屏幕大小的边界,所以当我将背景颜色更改为白色时,很明显边界被限制为初始屏幕宽度。

修复非常简单 - 一旦 for 循环完成,我就知道 containerView 需要多长,所以我只需将框架设置为适当的宽度。问题已解决!

关于ios - UIScrollview - 屏幕外按钮不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20831691/

相关文章:

iphone - Objective-C 中的 “category” 是什么?

ios - PFLogInViewController 不再被识别?

iphone - 如何使用 GPUImage 编辑现有视频并将其重新保存在设备库中

ios - 在推送通知 Swift 2 AppDelegate 上加载特定的 viewController

ios - 对于同一应用程序的 iOS 和 Web 客户端,我是否需要在 Spotify 开发者网站上使用两个不同的应用程序?

iphone - 将皮肤/主题添加到 iPhone 应用程序

ios - iOS 8 和之前版本中自动旋转的区别

objective-c - iOS 5 - 有没有办法在 UITextView 中禁用自动填充但保留拼写检查(红色下划线)?

Objective-C 继承应该改变父类(super class)中的变量

ios - 如何在 Swift 3 中将 UIImage 数组导出为电影?