我有一个内置UIImageView
imgView的自定义tableviewCell。我将UITapGestureRecognizer
添加到imgView中,这样每当我点击它时我都可以更改imgView的图像。但是,当我点击imgView时,didSelectRowAtIndexPath
也会被触发。我想要的是:
didSelectRowAtIndexPath
didSelectRowAtIndexPath
时,只需调用手势回调即可更改imgView的图像。当我点击imgView内部时已经调用了回调函数,但在这种情况下我无法阻止didSelectRowAtIndexPath。我一直在寻找几个小时,但还没有找到解决方案。我正在使用objective-c。有人对我的问题有任何想法吗?谢谢大家!
更新
最后我发现了我的错误。
UITapGestureRecognizer* tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onFavouriteIconTapped:)];
tapGesture.cancelsTouchesInView = NO; // this should be YES by default
[_ivImageView addGestureRecognizer:tapGesture];
只需设置cancelsTouchInView = YES
即可解决问题。如果值为YES,则ivImageView将使用触摸事件,并且不会选择单元格。希望这能帮助那些遇到同样问题的人。
答案 0 :(得分:2)
imageView.userInteractionEnabled = TRUE;
您也可以查看此内容 link
希望它会对你有所帮助。 :)
答案 1 :(得分:0)
你的方法很好。您的点击手势选择器可能未被调用,可能是因为您可能未启用UIImageView的用户交互。
imageView.userInteractionEnabled = TRUE;
对于UIImageView,userInteractionEnabled的默认值为NO。
一旦您的选择器开始被调用,您将获得所需的行为,即点击imgView,点击手势选择器被调用,并且在imgView didSelectRowAtIndexPath
之外的触摸将被调用。这符合iOS响应者链规则。