DisclosureIndicator不会检测到触摸

时间:2011-12-05 17:27:43

标签: ios objective-c uitableview cocoa-touch uikit

我使用UITableViewCellAccessoryDisclosureIndicator作为accessoryType的{​​{1}}。根据Apple的文档,数据源方法

UITableViewCell

应该自动被调用。

  

如果单元格已启用且附件类型为UITableViewCellAccessoryDe​​tailDisclosureButton,则附件视图将跟踪触摸,并在点击时向数据源对象发送tableView:accessoryButtonTappedForRowWithIndexPath:message。

这是我的代码:

- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath 

数据源方法只是一个- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; } [cell.textLabel setText:[datasource objectAtIndex:indexPath.row]]; cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; return cell; } ,但没有打印出来......

我错过了什么吗? (当然,数据源和代理设置正确)

2 个答案:

答案 0 :(得分:17)

答案在你的问题中。你说

  

我正在使用UITableViewCellAccessoryDisclosureIndicator   accessoryType ...

你引用了Apple文档的部分内容

  

如果单元格已启用且附件类型为UITableViewCellAccessoryDe​​tailDisclosureButton ...

只有在使用UITableViewCellAccessoryDetailDisclosureButton时才会调用委托方法。当然,区别在于这是一个按钮,UITableViewCellAccesssoryDisclosureIndicator不是。当你使用后者时,点击它就像敲击细胞本身一样。你可以创建一个自定义单元格并实现hitTest:以确定点击是否“接近”披露指标,但这似乎比必要的工作更多(除非你真的不希望使用详细披露按钮)。

答案 1 :(得分:0)

查看附件指示器的名称UITableViewCellAccessoryNone, UITableViewCellAccessoryDisclosureIndicator, UITableViewCellAccessoryDetailDisclosureButton UITableViewCellAccessoryCheckmark, UITableViewCellAccessoryDetailButton

仅详细按钮和详细信息显示按钮接收点击并调用方法。 U可以使用UIGestureRecognizer和自定义方法。