检测uitableviewcell的哪一侧已被点击:向左或向右

时间:2012-08-23 09:09:04

标签: iphone objective-c xcode

是否可以区分uitableview中哪一行被点击?

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
  //which side of row has been detected left or right
}

2 个答案:

答案 0 :(得分:7)

您可以继承UITableViewCell。在您的子类中,您可以创建一个iVar wasTouchOnLeft。然后覆盖touchesBegantouchesEnded,如下例所示:

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
    UITouch *touch=(UITouch *)[touches anyObject];
    if([touch locationInView:self].x< (0.5 * self.frame.size.width) )
    {
        NSLog(@"Touched Left");
        wasTouchOnLeft=YES;
    }
    else {
        NSLog(@"Touched Right");
        wasTouchOnLeft=NO;
    }
    [super touchesEnded:touches withEvent:event];
}

didSelectRowAtIndexPath的{​​{1}}中,您可以访问该单元格的UITableViewController变量。

答案 1 :(得分:1)

您无法在此方法中直接确定此内容。 但是,如果您真的想要此功能,请创建一个自定义的tableview单元格,该单元格有两个大按钮(一个在左侧一个)或在单元格上应用触摸识别器。

如果您将此操作委托给您的控制器 (您也可以将其存储在单元格中并通过其访问)

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
  if(((YourCustomTableCell*)[tableView cellForRowAtIndexPath:indexPath]).clickedSideProperty) action;
else anotherAction;
}

但是更好地从表格单元格委托它,而不是从didSelectRow ...

访问它