mea*_*lik 5 objective-c uitableview didselectrowatindexpath ios uitapgesturerecognizer
我有一个自定义的 tableviewCell ,UIImageView里面有一个 imgView 。我添加UITapGestureRecognizer到 imgView,这样每当我点击它时我就可以更改 imgView 的图像。但是,当我点击 imgView 时,didSelectRowAtIndexPath也会触发。我想要的是:
didSelectRowAtIndexPathdidSelectRowAtIndexPath,只需调用手势回调即可更改 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];
Run Code Online (Sandbox Code Playgroud)
只需设置cancelsTouchInView = YES解决我的问题即可。如果值为 YES,触摸事件将被 ivImageView 消耗,单元格将不会被选择。希望这能帮助有同样问题的人。
你的做法很好。您的点击手势选择器未被调用可能是因为您可能尚未启用 UIImageView 的用户交互。
imageView.userInteractionEnabled = TRUE;
对于 UIImageView,userInteractionEnabled 的默认值为 NO。
一旦您的选择器开始被调用,您将获得所需的行为,即单击 imgView 时,点击手势选择器将被调用,并且在 imgView 外部的触摸时didSelectRowAtIndexPath将被调用。这符合 iOS 响应者链规则。
| 归档时间: |
|
| 查看次数: |
1662 次 |
| 最近记录: |