关于UIView上添加一个手势,导致子视图相应事件无法响应的问题

以UITableView的cell点击事件为例
1、初始化

 UITapGestureRecognizer *tapGester = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(action_tapGester)];
        [self addGestureRecognizer:tapGester];
///首先让UITapGestureRecognizer不要吃掉子窗口的事件:
        tapGester.cancelsTouchesInView = NO;
///然后设置自身的代理:
        tapGester.delegate = self;

2、视图控制器遵守代理

@interface ZJZDTableMenuView ()<UITableViewDelegate,UITableViewDataSource,UIGestureRecognizerDelegate>
/** tableView */
@property (nonatomic, strong) UITableView *tableView;
@end

3、实现代理方法

#pragma mark - UIGestureRecognizerDelegate
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    // 若为UITableViewCellContentView(即点击了tableViewCell),则不截获Touch事件
    if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) {
        return NO;
    }
    return  YES;
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容