我在ViewDidLoad方法的桌面视图中添加了一个UILongPressGestureRecognizer。我添加了这个来检测我的代码中的长按表格视图。但它永远不会奏效。在ViewDidLoad中,我添加了以下代码:
UILongPressGestureRecognizer *lpgr = [[UILongPressGestureRecognizer alloc]
initWithTarget:self action:@selector(handleLongPress:)];
lpgr.minimumPressDuration = 2.0; //seconds
lpgr.delegate = self;
[self.resultTableView addGestureRecognizer:lpgr];
[lpgr release];
我还添加了这个方法:
-(void)handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer
{
CGPoint p = [gestureRecognizer locationInView:self.resultTableView];
NSIndexPath *indexPath = [self.resultTableView indexPathForRowAtPoint:p];
if (indexPath == nil) {
NSLog(@"long press on table view but not on a row");
}
else {
NSLog(@"long press on table view at row %d", indexPath.row);
}
}
请帮我解决这个问题?
答案 0 :(得分:6)
您的代码正常运行。我认为你必须在.h文件中添加UIGestureRecognizerDelegate
委托或如何声明resultTableView我的意思是你以编程方式定义或使用.xib文件。检查一次。
我试过这样的事。
resultTableView = [[UITableView alloc] init];
resultTableView =[[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 420) style:UITableViewStylePlain];
resultTableView.rowHeight = 100.0;
resultTableView.delegate=self;
resultTableView.dataSource=self;
[self.view addSubview:resultTableView];
UILongPressGestureRecognizer *lpgr = [[UILongPressGestureRecognizer alloc]
initWithTarget:self action:@selector(handleLongPress:)];
lpgr.minimumPressDuration = 2.0; //seconds
lpgr.delegate = self;
[resultTableView addGestureRecognizer:lpgr];
[lpgr release];
答案 1 :(得分:3)
看起来您想要将手势添加到单个单元格,但是您要将手势添加到表格中。请尝试将动画添加到UITableViewCell
。
答案 2 :(得分:0)
如果手势识别器被UITableView
panGestureRecognizer阻止,请执行委托以确保两者都能正常工作
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return YES;
}