获取按钮操作:UICollectionView Cell

Lit*_*T.V 23 ipad ios uicollectionview uicollectionviewcell

我创建了一个UICollectionViewCell由笔尖和里面添加一个按钮,并创建了一个h和.m文件添加类的碎粒file's owner.然后在.M写了一个按钮动作经由出口连接它.

集合视图填充正常,但无法触发按钮操作.我认为收集单元的代表被调用.

我怎样才能获得按钮动作?

hai*_*der 90

我也有这个问题.没有子视图会收到触摸事件.虽然Scott K的解决方法确实有效,但我仍然觉得有些不对劲.所以我又看了一下我的笔尖,注意到我用来创建UICollectionViewCell的原始子视图是一个UIView.即使我将类更改为UICollectionViewCell的子类,XCode仍然认为它是UIView,因此您在contentView中看到的问题没有捕获触摸事件.

为了解决这个问题,我通过确保拖动UICollectionViewCell对象并将所有子视图移动到那个来重新编写nib.之后,触摸事件开始对我的单元格的子视图起作用.

可以指示您的笔尖是否配置为UICollectionViewCell,请查看高级视图的图标.

在此输入图像描述

如果它看起来不像这样,那么它可能会解释错误的触摸事件.


Sco*_* K. 11

当您UICollectionViewCell通过笔尖创建时,笔尖的内容不会添加到单元格的contentView中 - 它将全部直接添加到UICollectionViewCell.似乎没有办法让Interface Builder将nib中的顶级视图识别为a UICollectionViewCell,因此"自动"内的所有内容都会添加到contentView中.

正如sunkehappy指出的那样,任何你想要接收触摸事件的东西都需要进入contentView.它已经为您创建,因此您可以做的最好的事情是以UIButtonawakeFromNib时间以编程方式将您移动到contentView.

-(void)awakeFromNib {
    [self.contentView addSubview:self.myButton];
}
Run Code Online (Sandbox Code Playgroud)


sun*_*ppy 7

UICollectionViewCell类参考

要配置单元格的外观,请将显示数据项内容所需的视图添加为contentView属性中视图的子视图.不要直接将子视图添加到单元格本身.该单元管理多个内容层,其内容视图仅为一个.除内容视图外,单元格还管理两个背景视图,这些视图以选定和未选定的状态显示单元格.

您可以awakeFromNib像这样添加按钮:

- (void)awakeFromNib
{
    UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 50, 50)];
    [button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
    [self.contentView addSubview:button];
}

- (void)buttonClicked:(id)sender
{
    NSLog(@"button clicked");
}
Run Code Online (Sandbox Code Playgroud)