关于iOS事件传递
PHPz
PHPz 2017-04-17 14:37:48
[iOS讨论组]

Button再接收到事件的时候,下面的子视图就接收不到了

怎么做可以让事件继续传递.

PHPz
PHPz

学习是最好的投资!

全部回复(4)
ringa_lee

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;
}

return [super hitTest:point withEvent:event];

}

  1. 如果被遮盖视图是button的supview的话
    在button中重写

- (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中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号