扫码关注官方订阅号
Button再接收到事件的时候,下面的子视图就接收不到了
怎么做可以让事件继续传递.
学习是最好的投资!
UIView实例有一个exclusiveTouch属性用于阻止touch event的继续传递。
UIView
exclusiveTouch
UIView有一个属性userInteractionEnabled,该属性值设为NO,则可取消事件传递。 当视图对象的userInteractionEnabled设置为NO的时候,用户触发的事件,如触摸,键盘等,将会被该视图忽略(其他视图照常响应),并且该视图对象也会从事件响应队列中被移除。
userInteractionEnabled
NO
button和被遮盖视图是什么关系? 1. 同级的话 在supview的中重写 - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { // 当touch point是在_btn上 CGPoint btnPointInA = [_btn convertPoint:point fromView:self]; if ([_btn pointInside:btnPointInA withEvent:event]) { //这里你自己触发子视图的方法 return _btn; }
return [super hitTest:point withEvent:event];
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [super touchesBegan:touches withEvent:event]; //这里做button的action NSLog(@"B - touchesBeagan..");
// 把事件传递下去给父View [self.nextResponder touchesBegan:touches withEvent:event];
} 感觉是挺奇怪的需求 不知道是否有帮助
如果是在同一个.m中的话,你直接就可以在button的触发方法中处理button的响应以及下层View的响应。 如果下边的View是封装或者上层的button是封装在View或者其他中的话,你只能写代理或者加block了。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
UIView
实例有一个exclusiveTouch
属性用于阻止touch event的继续传递。UIView
有一个属性userInteractionEnabled
,该属性值设为NO
,则可取消事件传递。当视图对象的
userInteractionEnabled
设置为NO
的时候,用户触发的事件,如触摸,键盘等,将会被该视图忽略(其他视图照常响应),并且该视图对象也会从事件响应队列中被移除。button和被遮盖视图是什么关系?
1. 同级的话 在supview的中重写
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
// 当touch point是在_btn上
CGPoint btnPointInA = [_btn convertPoint:point fromView:self];
if ([_btn pointInside:btnPointInA withEvent:event]) {
//这里你自己触发子视图的方法
return _btn;
}
}
在button中重写
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[super touchesBegan:touches withEvent:event];
//这里做button的action
NSLog(@"B - touchesBeagan..");
}
感觉是挺奇怪的需求 不知道是否有帮助
如果是在同一个.m中的话,你直接就可以在button的触发方法中处理button的响应以及下层View的响应。
如果下边的View是封装或者上层的button是封装在View或者其他中的话,你只能写代理或者加block了。