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;
}
视图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;
}
相关文章推荐
- UITapGestureRecognizer和UIButton的点击事件冲突的解决办法
- 如何解决UIScrollView中添加UITapGestureRecognizer跟UIButton点击事件冲突
- 解决UITapGestureRecognizer 与 UITableView 点击事件冲突
- 父视图的UITapGestureRecognizer和子视图UICollectionView的cell点击冲突解决办法
- iOS UITapGestureRecognizer手势和UIButton 以及UITabelView点击事件冲突
- 解决UITapGestureRecognizer手势与UITableView的点击事件的冲突
- iOS 6.0之前 UITapGestureRecognizer手势和UIButton 点击事件冲突
- 如何解决UIScrollView中添加UITapGestureRecognizer跟UIButton点击事
- 解决触摸事件冲突-UITapGestureRecognizer
- 在已经响应UITapGestureRecognizer的UIView中清晰的响应UIButton点击事件
- UITapGestureRecognizer和UITableView点击事件冲突问题
- 在已经响应UITapGestureRecognizer的UIView中清晰的响应UIButton点击事件
- Swift UICollectionView、UITableView列点击事件与 UITapGestureRecognizer 点击事件冲突处理
- 手势和UI控件之间冲突的解决方法(比如UITapGesture和UIButton冲突,UIPanGesture和UISlider冲突)
- IOS开发之触摸与点击事件:UITapGestureRecognizer与UIPanGestureRecognizer应用
- 开发笔记:解决安卓GestureOverlayView手势和ListView点击事件、文本框获取焦点冲突的问题
- 手势和UI控件之间冲突的解决方法(比如UITapGesture和UIButton冲突,UIPanGesture和UISlider冲突)
- gridview中单元格button的点击事件和onitemclick点击冲突及解决办法
- 在ListView中的Text添加spannableString 点击事件与ListView的OnItemClick事件冲突的解决办法
- Android Listview中Button按钮点击事件冲突解决办法