【问题标题】:Xcode 6 beta4, UIButton is not responsable in collectionviewcellXcode 6 beta 4,UIButton 在collectionviewcell 中不负责
【发布时间】:2014-07-29 06:08:27
【问题描述】:

我使用的是Xcode 6.0 beta 4,发现UICollectionViewCell中的按钮对点击没有反应。

详情如下:

UICollectionViewController

--- UICollectionViewCell

------UIButtonUIButton 有两个autolayout 约束,将UIButton 放在垂直中心,水平中心放在Cell

现在让cell 的大小类似于:(300, 1000)

在 iPhone 模拟器或 iOS 7.0 或 7.1.x 的设备上运行应用程序,按钮不可触摸,但在 iOS 8.0 模拟器中测试就可以了。 此外,如果我将单元格 size 更改为 (300, 200),按钮将起作用。

我认为这是 Xcode 测试版中的一个错误,对吧?

我可以在哪里将错误发送给 Apple?

【问题讨论】:

标签: ios uibutton uicollectionviewcell xcode6


【解决方案1】:

他们忘记为 UICollectionViewCell 的 contentView 设置 autoresizingMask

修复一下

self.contentView.autoresizingMask = UIViewAutoresizingFlexibleHeight |    UIViewAutoresizingFlexibleWidth;

【讨论】:

  • 感谢 Alexey,它有效。我已经向苹果报告了这个错误
【解决方案2】:

看起来这实际上不是一个错误,而是使用 Xcode 6 定位 iOS 7 设备的不兼容问题。ecotax's post 对此进行了更详细的描述,但这是来自 Apple DTS 的回复:

在 iOS 7 中,单元格的内容视图通过自动调整大小的掩码自行调整大小。在 iOS 8 中,这发生了变化,单元格停止使用自动调整大小的掩码,并开始在 layoutSubviews 中调整内容视图的大小。如果 nib 在 iOS 8 中编码,然后在 iOS 7 中解码,您将拥有一个没有自动调整大小掩码的内容视图,也没有其他方法可以调整自身大小。因此,如果您更改单元格的框架,内容视图将不会跟随。

部署回 iOS 7 的应用必须通过调整内容视图本身的大小、添加自动调整大小的掩码或添加约束来解决此问题。

上述 Alexey 的解决方案可以解决问题:

- (void)awakeFromNib
{
   // Fix for iOS 7 devices targeted using Xcode 6.
   self.contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多