我正在开发一个 iOS 5 应用程序,在我的情况下,如果用户第一次从 UITableView 中点击一行,那么它将执行一些操作,如果第二次点击它,它将执行不同的操作。
现在,问题是如何知道特定行是否被第二次点击?
提前致谢!!
我正在开发一个 iOS 5 应用程序,在我的情况下,如果用户第一次从 UITableView 中点击一行,那么它将执行一些操作,如果第二次点击它,它将执行不同的操作。
现在,问题是如何知道特定行是否被第二次点击?
提前致谢!!
那你为什么不将 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);
}
}
这是我的解决方案(正如 Eiko 建议的那样):
每当第一次在数组中选择行并调用第一个操作时,维护一个可变数组并存储行索引。当第二次选择行或选择另一行时,检查该行的索引是否存在于数组中,如果是,则调用第二个操作,否则将行的索引添加到数组并调用第一个操作。