是否有添加多个UITapGestureRecognizers的简单解决方案?我有一个包含UIImageView的表视图标题。在图像视图边缘周围是标题的空白空间。我想要实现的是添加标题的tap方法和图像视图的tap方法。但是在标题中添加一个使用整个标题,包括图像视图。有没有办法将它们分开?
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
UIView *header = [[UIView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 250)];
UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(35, 10, 250, 250)];
_imageView = imageView;
_imageView.image = imageData;
UITapGestureRecognizer *headerTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(headerTapped:)];
_headerTap = headerTap;
UITapGestureRecognizer *imagetap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(imageTapped:)];
_imagetap = imagetap;
[header addGestureRecognizer:_headerTap];
[_imageView addGestureRecognizer:_imagetap];
[header addSubview:_imageView];
return header;
}
答案 0 :(得分:3)
制作一个覆盖整个标题的透明按钮 将图像视图放在上面并用另一个透明按钮覆盖它。
答案 1 :(得分:1)
您可以通过聆听手势识别器的委托方法来完成此操作。根据视图的设置方式,您可以使用
(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
查看是否要让识别器触发。例如,我们有一个带有下拉表视图的应用程序来执行选择。我们安装了两个识别器,一个在窗口上,所以我们可以“卷起”#39;用户点击它之外的下拉菜单,以及“按钮”中的一个按钮。这只是一个细胞的内容。我们使用此方法来确定触摸是否在我们可见的tableview范围之外,如果是这样我们将其解除。
其他相关的委托方法是
(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
根据您的描述,这似乎是最好用的。从这里你可以告诉你的标题手势识别器不要在你的图像视图旁边发射。例如
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
if (gestureRecognizer == self.headerGestureReconizer && otherGestureRecognizer == self.imageViewGestRecognizer) {
return NO;
}
return YES;
}
您还可以通过实例方法(void)requireGestureRecognizerToFail:(UIGestureRecognizer *)otherGestureRecognizer
在手势识别器中设置依赖关系。当您在同一视图中使用单击和双击识别器时,这非常有用,并且在这种情况下不是您想要的。