Xcode 6 beta 4,UIButton 在collectionviewcell 中不负责
Posted
技术标签:
【中文标题】Xcode 6 beta 4,UIButton 在collectionviewcell 中不负责【英文标题】:Xcode 6 beta4, UIButton is not responsable in collectionviewcell 【发布时间】:2014-07-29 06:08:27 【问题描述】:我使用的是Xcode 6.0 beta 4,发现UICollectionViewCell
中的按钮对点击没有反应。
详情如下:
UICollectionViewController
--- UICollectionViewCell
------UIButton
(UIButton
有两个autolayout
约束,将UIButton
放在垂直中心,水平中心放在Cell
)
现在让cell
的大小类似于:(300, 1000)
在 iPhone 模拟器或 ios 7.0 或 7.1.x 的设备上运行应用程序,按钮不可触摸,但在 iOS 8.0 模拟器中测试就可以了。
此外,如果我将单元格 size
更改为 (300, 200)
,按钮将起作用。
我认为这是 Xcode 测试版中的一个错误,对吧?
我可以在哪里将错误发送给 Apple?
【问题讨论】:
您可以通过此站点报告错误:developer.apple.com/bug-reporting Autoresizing issue of UICollectionViewCell in Storyboard prototype cell (Xcode 6 Beta 3 deploying to iOS 7)的可能重复 【参考方案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;
【讨论】:
以上是关于Xcode 6 beta 4,UIButton 在collectionviewcell 中不负责的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 6.2 beta 4 是不是使带有页面的 watchKit 接口无法打开推送的接口?
安装 XCode 6 beta 4 后无法运行旧的 swift 项目