Xcode 6 beta4,UIButton在collectionviewcell中不负责任

时间:2014-07-29 06:08:27

标签: ios uibutton uicollectionviewcell xcode6

我正在使用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?

2 个答案:

答案 0 :(得分:6)

他们忘记为UICollectionViewCell的contentView设置autoresizingMask

解决这个问题

self.contentView.autoresizingMask = UIViewAutoresizingFlexibleHeight |    UIViewAutoresizingFlexibleWidth;

答案 1 :(得分:1)

这似乎不是一个错误,但使用Xcode 6定位iOS 7设备的不兼容问题。ecotax's post更详细地描述了这一点,但这是Apple DTS的回复:

  

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

     

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

Alexey的解决方案可以解决这个问题:

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