1

我正在开发一个 iOS 5 应用程序,在我的情况下,如果用户第一次从 UITableView 中点击一行,那么它将执行一些操作,如果第二次点击它,它将执行不同的操作。

现在,问题是如何知道特定行是否被第二次点击?

提前致谢!!

4

2 回答 2

5

那你为什么不将 UIGestures 与 TableView 一起使用。这将是最简单的解决方案,对我来说就像魅力一样。

这是帮助您在代码中实现它的代码:

    // Put this code in your ViewDidLoad:
    UITapGestureRecognizer *doublegesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTableViewCellDoubleTapping:)];
    doublegesture.numberOfTapsRequired = 2;
    [roomTableView addGestureRecognizer:doublegesture];
    [doublegesture release];

//双击事件处理方法

-(void)didTableViewCellDoubleTapping:(UITapGestureRecognizer *)gestureRecognizer 
{
    if (gestureRecognizer.state == UIGestureRecognizerStateEnded) {
        CGPoint swipeLocation = [gestureRecognizer locationInView:roomTableView];
        NSIndexPath *swipedIndexPath = [roomTableView indexPathForRowAtPoint:swipeLocation];
        NSLog(@"%d",swipedIndexPath.row);
                
        // ... Here you can add your logic
    }
}

以类似的方式,如果您添加另一个 UIGesture for Single tap

 UITapGestureRecognizer *gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTableViewSingleCellTapping:)];
    gesture.numberOfTapsRequired = 1;
    [roomTableView addGestureRecognizer:gesture];
    [gesture release];
    
    [gesture requireGestureRecognizerToFail:doublegesture];

-(void)didTableViewSingleCellTapping:(UITapGestureRecognizer *)gestureRecognizer 
{
    if (gestureRecognizer.state == UIGestureRecognizerStateEnded) {
        CGPoint swipeLocation = [gestureRecognizer locationInView:roomTableView];
        NSIndexPath *swipedIndexPath = [roomTableView indexPathForRowAtPoint:swipeLocation];
        
        NSLog(@"%d",swipedIndexPath.row);
    }
}
于 2012-10-18T11:12:59.923 回答
1

这是我的解决方案(正如 Eiko 建议的那样):

每当第一次在数组中选择行并调用第一个操作时,维护一个可变数组并存储行索引。当第二次选择行或选择另一行时,检查该行的索引是否存在于数组中,如果是,则调用第二个操作,否则将行的索引添加到数组并调用第一个操作。

于 2012-10-19T06:15:14.953 回答