其实实际面试关于这块问的还可以更深

来源:3-3 UI事件传递&响应 相关面试问题

xq_aaron

2019-02-26

其实实际面试关于这块问的还可以更深,1.如何实现透层 2.子视图范围覆盖父视图,那么点击超出父视图地方,子视图可以响应事件否3.各个子视图重叠,重叠区域事件响应如何等等。同时老师要是可以按照事件的下发和事件的响应两条线讲可能会更清晰。

写回答

2回答

卷王Charles

2021-10-10

回答下JerseyCafe关于楼主第一个问题的一个具体案例,问题三感觉和问题一类似,根据业务场景返回响应的视图即可

点击下图中红色箭头所指的区域,如果让视图2(黄色区域)来响应,需要重写视图1的hitTest方法来返回视图2。代码如下:

//View1中 hitTest
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    __block UIView *view = nil;
    [self.subviews enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        if ([obj isKindOfClass:[View2 class]] && [obj pointInside:point withEvent:event]) {
            view = obj;
        }
    }];
    return view;
}

//img.mukewang.com/szimg/6162b67009fb754e07081644.jpg

0
0

xq_aaron

提问者

2019-02-26

其实老师讲解的是很清晰的,但是可能部分同学没有办法做到学以致用,所以举例说明几个也更好,我也是分析完了,写了demo才确认是如何的,希望对课程有帮助。

0
1
JerseyCafe
嗯, 挺好的。 不知道你 1 和 3 分别都是如何简述的呢。
2019-03-14
共1条回复

资深大牛带你深度剖析ios高级面试

从BAT/TMD名企真题入手,结合源码及应用,构建完整iOS知识体系

1749 学习 · 600 问题

查看课程