iOS 子视图响应父视图的点击事件

最近为了解决 点击子视图却依然会响应父试图的点击事件发现UITapGestureRecognizer上的一个代理方法:

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

如果返回no则不响应,因此我们可以根据isDescendantOfView:方法来判定一个视图是否在其父视图的视图层中。把我们不想让其响应的子视图拿出来判断一下,如果包含这个子视图就返回no,否则就是yes。

具体写法:

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self

action:@selector(removeSubviews)];

tap.delegate = self;

self.userInteractionEnabled = YES;

[self.alpha_back_view addGestureRecognizer:tap];

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

if ([touch.view isDescendantOfView:self.tableView_back_view]) {

return NO;

}

return YES;

}

时间: 2024-08-07 21:18:19

iOS 子视图响应父视图的点击事件的相关文章

js在父元素上添加点击事件,怎么阻止子元素继承父元素的点击事件?

div.onclick = function(ev){ if(ev.target!=this) return; else { ... } }

子视图不响应父视图的手势识别

1.遵守代理 <UIGestureRecognizerDelegate> 2.实现代理方法 // 子视图不响应父视图的手势识别 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { if ([touch.view isDescendantOfView:self.TUcalendarHeaderView] || [touch.view isD

iOS10 UI教程子视图和父视图UI层次结构和Views继承

iOS10 UI教程子视图和父视图UI层次结构和Views继承 iOS10 UI教程子视图和父视图UI层次结构和Views继承,本节将讲解与UI层次结构和Views继承相关的内容,其中包括子视图和父视图.管理层次结构.视图和子视图的可见性.层次结构的事件等内容. 子视图和父视图 每一个UIView(或者是子类)的实例都可以与其它的视图使用父-子关系的方式进行连接.其中父视图被称为superview(超视图),孩子视图被称为subviews(子视图).一个视图可以有且仅有一个父视图,但是可以有多个

iOS一行代码将所有子视图从父视图上移除

原文链接: iOS一行代码将所有子视图从父视图上移除 简书主页:http://www.jianshu.com/users/37f2920f6848 Github主页:https://github.com/MajorLMJ iOS开发者公会-技术1群 QQ群号:87440292 iOS开发者公会-技术2群 QQ群号:232702419 iOS开发者公会-议事区   QQ群号:413102158

IOS子视图超过父视图frame后,无法交互响应

确定第一响应者 当用户触发某一事件(触摸事件或运动事件)后,UIKit会创建一个事件对象(UIEvent),该对象包含一些处理事件所需要的信息.然后事件对象被放到一个事件队列中.这些事件按照先进先出的顺序来处理.当处理事件时,程序的UIApplication对象会从队列头部取出一个事件对象,将其分发出去.通常首先是将事件分发给程序的主window对象,对于触摸事件来讲,window对象会首先尝试将事件分发给触摸事件发生的那个视图上.这一视图通常被称为hit-test视图,而查找这一视图的过程就叫

IOS 子视图获取父视图的控制器

UIResponder* nextResponder = [self.view.superview.superview nextResponder]; if ([nextResponder isKindOfClass:[UIViewController class]]) { uic = (UIViewController*)nextResponder; uic.hidesBottomBarWhenPushed = YES; [uic.navigationController pushViewCo

模态视图和父视图之间转换的方法

1.模态视图的静态工厂方法调用: + (void)dismiss { UIWindow *window; window = [UIApplication sharedApplication].keyWindow; if([window.rootViewController isKindOfClass:[ASDepthModalViewController class]]) { ASDepthModalViewController *controller; controller = (ASDept

vue组件-子组件向父组件传递数据-自定义事件

自定义事件 我们知道,父组件是使用 props 传递数据给子组件,但如果子组件要把数据传递回去,应该怎样做?那就是自定义事件!

IOS 多个ImageView图片层叠透明区域点击事件穿透

经常用到多个透明图片层叠,但又需要获取不同图片的点击事件,本文实现图片透明区域穿透点击事件 实现人体各个部位点击 [objc] view plain copy - (BOOL) pointInside:(CGPoint)point withEvent:(UIEvent *)event { CGPoint shoulderPoint = [self getNewPoint:point SetImage:shouldImage]; if(CGRectContainsPoint(shouldImage