UIimageView和Accessory View在TableViewCell中单独工作

时间:2013-02-06 00:47:43

标签: ios uitableview

我正在研究类似于Apple提醒应用的应用。我有一个带有数据的tableView。该单元具有UIImageView和Disclosure Indicator附件视图。选择任何行时,将推送视图控制器。

我希望每行的UIImageView能够与Apple提醒应用中的行选择分开工作。我怎样才能做到这一点?

我已尝试将UIimageview作为单元格的子视图,并为其添加了UITapGestureRecognizer。它在最后插入的行中运行良好,但没有与其他行一起使用。

2 个答案:

答案 0 :(得分:1)

您可以考虑继承UITableViewCell,而不是UIImageView的子类。在您的子类中,您仍然可以向UIImageView添加UITapGestureRecognizer,但是您可以在单元的子类(而不是表控制器上)上定位一个方法,尽管您没有说明当前处理程序的目标。

将tapRecognizer添加到自定义单元格的UIImageView中,并在自定义单元格上也有一个BOOL标志(例如,imageViewTapped)。在您的点击处理程序中,将imageViewTapped设置为YES。

现在,无论tap是否在imageVIew上,你的tableView控制器仍然会调用didSelectRowWithIndexPath。因此,在didSelectRowAtIndexPath中,评估自定义单元格的imageViewTapped属性。如果已设置标志,请在导航堆栈上按viewController A(用于imageView行为)。如果imageViewTapped == NO,请按viewController B(可能是你已经转换到的那个)。

答案 1 :(得分:1)

@Adel。您可以在imageView上放置一个透明按钮以响应用户的触摸。

CGRect imageRect = (CGRect){100, 100, 100, 100};
UIImageView *imageView = [[[UIImageView alloc] initWithFrame:imageRect] autorelease];
imageView.backgroundColor = [UIColor yellowColor];
[self.view addSubview:imageView];
imageView.userInteractionEnabled = YES;

UIButton *maskBtn = [UIButton buttonWithType:UIButtonTypeCustom];
maskBtn.frame = imageView.bounds;
maskBtn.backgroundColor = [UIColor clearColor];
[maskBtn addTarget:self action:@selector(maskBtnDidClick:) forControlEvents:UIControlEventTouchUpInside];
[imageView addSubview:maskBtn];

请注意,默认情况下,imageView的userInteractionEnabled为NO。 希望有所帮助 :)