如果在目标 c 中使用手势,didSelectItemAtIndexPath 不起作用
Posted
技术标签:
【中文标题】如果在目标 c 中使用手势,didSelectItemAtIndexPath 不起作用【英文标题】:didSelectItemAtIndexPath not working if using gesture in objective c 【发布时间】:2018-08-02 06:30:39 【问题描述】:我有一个 UIView A,我在 A 中添加了一个 UICollectionView B 作为 subView,所以现在视图 A 是 B 的背景视图。这时候 didSelectItemAtIndexPath 会被正常调用。但是,如果我向视图 A 添加轻击手势识别器,则不会调用 didSelectItemAtIndexPath。
【问题讨论】:
shouldReceiveTouch on UITableViewCellContentView的可能重复 【参考方案1】:您要检查的几件事:
-
没有
self.collectionView.allowsSelection = NO
。你希望它是 YES。
我过去曾犯过这个错误,我不小心尝试改写didDeselectItemAtIndexPath
。确保你不像我。
如果满足您的目的,请使用[tapGestureRecognizer setCancelsTouchesInView:NO]
。它不会发送取消消息,应该可以解决问题。
【讨论】:
【参考方案2】:- (void)testTouch:(UITapGestureRecognizer*)gesture
if ([self.collectionView hitTest:[gesture locationInView:self.collectionView]
withEvent:nil])
NSLog(@"testTouch in collection");
else
NSLog(@"testTouch in collection.superview");
- (void)viewDidLoad
[super viewDidLoad];
UITapGestureRecognizer *g =
[[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(testTouch:)];
g.cancelsTouchesInView = NO;
[self.collectionView.superview addGestureRecognizer:g];
【讨论】:
以上是关于如果在目标 c 中使用手势,didSelectItemAtIndexPath 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
如何在目标 c 中具有某些标签的特定标签上应用 UITapGestureRecognizer