问题描述:
视图view上有一个UIButton实例btn,绑定了一个点击事件的响应方法buttonClicked:,由于某种需要(如点击空白区域收起键盘),为view添加了UITapGestureRecognizer手势,关键代码如下:
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(resignRespond)];
[self.view addGestureRecognizer:tap];
[tap release];
运行,点击按钮btn的时候,方法buttonClicked:未调用,调用的是UITapGestureRecognizer手势的回调方法resignRespond。也就是说UIButton的点击事件被UITapGestureRecognizer截获了,两者相互冲突。
解决方法:
设置UITapGestureRecognizer的代理,然后在协议方法中作判断,主要代码如下:
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(resignRespond)];
tap.delegate = self;
[self.view addGestureRecognizer:tap];
[tap release]; UITa

当在UIView上同时使用UIButton和UITapGestureRecognizer时,可能会遇到点击事件冲突的问题。通过设置手势识别器的代理,并在代理方法中判断点击来源,可以避免这种冲突。具体解决方案是实现UIGestureRecognizerDelegate,然后在`gestureRecognizer:shouldReceiveTouch:`方法里检查触摸是否来自UIButton,如果是则返回NO,否则返回YES。
最低0.47元/天 解锁文章

1010

被折叠的 条评论
为什么被折叠?



