长按手势响应方法为什么被调用了两次
我在一个imageView上添加了一个UILongPressGestureRecognizer手势,为什么手势的响应方法会被调用了两次?我只需要调用一次就可以了呀。...
我在一个imageView上添加了一个UILongPressGestureRecognizer手势,为什么手势的响应方法会被调用了两次?我只需要调用一次就可以了呀。
展开
展开全部
UILongPressGestureRecognizer *longPressGr = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressAction:)];
longPressGr.minimumPressDuration = 0.5f;
longPressGr.numberOfTouchesRequired = 1;
[_tableView addGestureRecognizer:longPressGr];
[longPressGr release];
这时会发现每次按住tableView并且松开的时候, longPressAction: 这个方法会执行2次
- (void)longPressAction:(UILongPressGestureRecognizer *)longPress
{
if (longPress.state == UIGestureRecognizerStateBegan) {
CGPoint point = [longPress locationInView:_tableView];
NSIndexPath *indexPath = [_tableView indexPathForRowAtPoint:point]; // 可以获取哪个cell上长按
if (indexPath != nil) {
NSLog(@"%ld", indexPath.row);
}
}
}
longPressGr.minimumPressDuration = 0.5f;
longPressGr.numberOfTouchesRequired = 1;
[_tableView addGestureRecognizer:longPressGr];
[longPressGr release];
这时会发现每次按住tableView并且松开的时候, longPressAction: 这个方法会执行2次
- (void)longPressAction:(UILongPressGestureRecognizer *)longPress
{
if (longPress.state == UIGestureRecognizerStateBegan) {
CGPoint point = [longPress locationInView:_tableView];
NSIndexPath *indexPath = [_tableView indexPathForRowAtPoint:point]; // 可以获取哪个cell上长按
if (indexPath != nil) {
NSLog(@"%ld", indexPath.row);
}
}
}
展开全部
借鉴一下别人的答案 的确可以解决问题:
- (void) handleLongPressAction:(UILongPressGestureRecognizer*)press {
//解决响应两次的问题
if (press.state == UIGestureRecognizerStateEnded) {
return;
} else if (press.state == UIGestureRecognizerStateBegan) {
//TODO
}
}
- (void) handleLongPressAction:(UILongPressGestureRecognizer*)press {
//解决响应两次的问题
if (press.state == UIGestureRecognizerStateEnded) {
return;
} else if (press.state == UIGestureRecognizerStateBegan) {
//TODO
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询