iOS-捕获左键点击添加到 UITableViewCell 的子视图

发布时间: 2017/3/21 22:40:22
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我想使用 CollapseClick 表控制。这所有的作品,但看起来似乎无法扩展表格单元格时显示的视图中添加按钮事件。

仔细阅读代码,它是 UITableView ,它创建 UITableViewCell s 和添加 UIView s 动态。 我认为 UIView 在此处添加︰

+ (CollapseClickCell *)newCollapseClickCellWithTitle:(NSString *)title index:(int)index    content:(UIView *)content {
    NSArray* views = [[NSBundle mainBundle] loadNibNamed:@"CollapseClickCell" owner:nil options:nil];
    CollapseClickCell *cell = [[CollapseClickCell alloc] initWithFrame:CGRectMake(0, 0, 320, kCCHeaderHeight)];
    cell = [views objectAtIndex:0];

    // Initialization Here
    cell.TitleLabel.text = title;
    cell.index = index;
    cell.TitleButton.tag = index;
    cell.ContentView.frame = CGRectMake(cell.ContentView.frame.origin.x, cell.ContentView.frame.origin.y, cell.ContentView.frame.size.width,  content.frame.size.height);
    [cell.ContentView addSubview:content];

    return cell;
}

按钮的显示,但是,如果我试着和挂钩任何事件,我永远不能捕捉他们。

它是可能很简单。 我有把应用程序放在这里︰ http://www.havoc-media.com/TravelApp.zip

解决方法 1:

看着你的代码,你有几个可以俯瞰,使用视图的时候。

最重要的事情了解的意见是要单击事件注册的子视图的父视图不能小。愚蠢的事情是,即使你可以直观地查看你注入你的 ContentView,内容视图的宽度设置为零,这意味着 ContentView 里面的所有视图可能会显示,但是不会响应单击事件和单击事件将默认为 ContentView parentview,从而使你的按钮不可用和反应迟钝。

为了解决这个问题在你的 openCollapseClickCellAtIndex,您需要添加代码︰

cell.ContentView.frame = CGRectMake(cell.ContentView.frame.origin.x, cell.ContentView.frame.origin.y, 320, cell.ContentView.frame.size.height); 

你的第二个问题是您创建的 CollapseClickCell xib 不沟通回视图控制器。这意味着在视图控制器中创建的视图,在其中您想要向报告视图控制器...CollapseClickCell xib 注射不是。

还有的方式来解决这个问题但在我看来我会创建另一个自定义 xib A 注入你的 CollapseClickCell,和有 xib A 句柄而不是 test1View 你按钮单击事件。创建 xib 称为"testView"链接到一个测试类,并将此代码放在

-(UIView *)viewForCollapseClickContentViewAtIndex:(int)index
 {
  NSArray* views = [[NSBundle mainBundle] loadNibNamed:@"testView" owner:nil options:nil];

  UIView *content = [views objectAtIndex:0];

  switch (index) {
    case 0:
      return content; /*test1View;*/
      break;

一旦这两个问题得到解决,您的代码将工作。我可以包括的添加了到您的代码,使其工作如果你想要看到它吗?

赞助商