在我的应用程序中,我希望用户在一行中点击两次以显示警报视图,以显示所选行的详细信息。目前我已经实施了另外两种手势,从左向右滑动并长按1秒。 这是代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
reuseIdentifier:@"Cell"] autorelease];
}
//long press gesture
UILongPressGestureRecognizer *lpgr = [[UILongPressGestureRecognizer alloc]
initWithTarget:self action:@selector(handleLongPress:)];
lpgr.minimumPressDuration = 1.00;
[cell addGestureRecognizer:lpgr];
//end of long press gesture11111
//swipe left-right
UISwipeGestureRecognizer *swipeLeftRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleGestureLeftRight:)];
[swipeLeftRight setDirection:(UISwipeGestureRecognizerDirectionRight | UISwipeGestureRecognizerDirectionLeft )];
[cell addGestureRecognizer:swipeLeftRight];
//end of swipe left-right
[self configureCell:cell atIndexPath:indexPath];
return cell;
}
我还没有找到任何可以应用于我的代码的内容,因此任何提案都会受到赞赏。
答案 0 :(得分:1)
您可以通过三种不同的方式执行此操作(根据所需的效果和编码风格而有所不同)。
第一种方法是添加一个doubletap手势识别器(如果你在任何时间内寻找双击而不是两次点击)。我认为你可以自己编码。
第二种方法是检测细胞选择:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//Check if the cell at indexPath is currently the tableview's selected cell then you have double tap
}
第三个与第二个相同,除了您创建一个indexPath变量并在didselectrow
方法中设置它。然后,如果下一个didselectrow
调用是完全相同的indexPath,那么您可以双击。
我的投票将是保存的变量。我不确定tableview和cell的“selected”属性是多么可靠。但是你必须实现didDeselectRow
函数,因为在tableview选择之外的情况下可以调用它。