永发信息网

ios代码如何让子类视图超出父类视图的部分响应事件

答案:3  悬赏:10  手机版
解决时间 2021-04-14 06:29
ios代码如何让子类视图超出父类视图的部分响应事件
最佳答案
在父视图重写方法
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    UIView *view = [super hitTest:point withEvent:event];
    
    if (self.userInteractionEnabled == NO && self.alpha <= 0.01 && self.hidden == YES) {
        return nil;
    }
    
    
    for (UIView * subview in self.subviews.reverseObjectEnumerator) {
        
        CGPoint converP = [subview convertPoint:point fromView:self];
        UIView *suitableView = [subview hitTest:converP withEvent:event];
        
        if (resultView) {
            return suitableView;
        } else {
            return view;
        }
    }
    
    return view;
}
全部回答


//重写hit让超出self范围的子视图能响应点击时间

-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{
if (self.userInteractionEnabled == NO && self.alpha<=0.01 && self.hidden == YES) {
return nil;
}
//根据返回的view是否为空判断点击的是否是在父视图的范围内,null则表示不再范围内,否则返回自己本身。
UIView *view = [super hitTest:point withEvent:event];
if (!view) {
for (UIView *subView in self.subviews) {
CGPoint converPoint = [subView convertPoint:point fromView:self];
//点是否在相应的视图上
if (CGRectContainsPoint(subView.bounds, converPoint)) {
//相应的视图处理事件并返回
return [subView hitTest:converPoint withEvent:event] ;
}
}
}
return view;
}
重写父视图的hitTest:(CGPoint)point withEvent:(UIEvent *)event方法
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
如果一个人你不喜欢,却还要在一起,这样要怎么
电脑贴吧怎么加好友
罗马尼亚眼镜蛇伊利耶现在怎么样了?在干什么
柏林艺术大学有钢琴演奏博士学位吗?申请难否
临沂西郊哪段批发服装又便宜又时尚质量又好
平价小卖部我想知道这个在什么地方
为什么他说不愿意一起照相,是因为男生都不喜
梦幻诛仙宝宝成长有用吗?
密西西比河水流平稳,利于航行,主要原因是A.
菏泽区号是多少,山东菏泽的区号是多少 20分
战地2怎么不可以联网?
电影《暮光之城2》的剧情介绍
炫舞的图标能永久点亮吗
什么事每人每天都必须认真的做?
录制网页上的视频,比如迅雷看看那种类型的。
推荐资讯
重庆股票证券办理开户转户的地址在那里?
62除以3.7的竖式计算
有关大理的诗句
怎样提升手机的版本
鑫福食品这个地址在什么地方,我要处理点事
三角社保局电话号码是多少?
单选题选出节奏划分有误的一项是()A.天街/
{鹰隼大队}里马赫最后和江婧超结婚了吗?
5730盘锦有卖的吗
填空题近年来,地质灾害频繁发生,对人们的生
如图,在梯形ABCD中,AD∥BC,AB=AD=CD,点E
我院举办“美丽是福,还是祸”辩论表演赛
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?