您的位置:首页 > 产品设计 > UI/UE

UITapGestureRecognizer和UIButton的点击事件冲突的解决办法

2014-01-06 13:04 561 查看
转载地址 http://blog.csdn.net/numbbuaa/article/details/8677762
视图view上有一个UIButton实例btn,绑定了一个点击事件的响应方法buttonClicked:,由于某种需要(如点击空白区域收起键盘),为view添加了UITapGestureRecognizer手势,关键代码如下:

[plain] view
plaincopy

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(resignRespond)];

[self.view addGestureRecognizer:tap];

[tap release];

运行,点击按钮btn的时候,方法buttonClicked:未调用,调用的是UITapGestureRecognizer手势的回调方法resignRespond。也就是说UIButton的点击事件被UITapGestureRecognizer截获了,两者相互冲突。

解决方法:

设置UITapGestureRecognizer的代理,然后在协议方法中作判断,主要代码如下:

[plain] view
plaincopy

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(resignRespond)];

tap.delegate = self;

[self.view addGestureRecognizer:tap];

[tap release];

UITapGestureRecognizer协议方法:

[plain] view
plaincopy

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch

{

if ([touch.view isKindOfClass:[UIButton class]])

{

return NO;

}

return YES;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐