Button再接收到事件的时候,下面的子视图就接收不到了
怎么做可以让事件继续传递.
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;
}
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了。
2 回答1.1k 阅读
1 回答1.2k 阅读✓ 已解决
1 回答2.8k 阅读
1 回答1.5k 阅读
1.7k 阅读
1 回答992 阅读
1 回答807 阅读
UIView
实例有一个exclusiveTouch
属性用于阻止touch event的继续传递。