星空网 > 软件开发 > 操作系统

iOS UIView事件隔层传递 pointInside:withEvent:

 

多层视图重叠跳过中间层,实现隔层视图事件响应

 

//

//  DataViewController.m

//  UIScrollViewPanGesture

//

//  Created by Peace on 11/17/15.

//  Copyright © 2015 Peace. All rights reserved.

//

 

#import "DataViewController.h"

 

 

@interface TestView1 : UIView

 

@end

 

@implementation TestView1

 

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event

{

    CGRect frame = CGRectMake(0, 0,

                              self.frame.size.width,

                              self.frame.size.height);

    BOOL value = (CGRectContainsPoint(frame, point));

    NSArray *views = [self subviews];

    for (UIView *subview in views) {

        value = (CGRectContainsPoint(subview.frame, point));

        if (value) {

            return value;

        }

    }

    return NO;

}

 

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event

{

    NSLog(@"1:xxxx");

}

- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event

{

    NSLog(@"1:yyyy");

}

 

@end

 

@interface TestView2 : UIView

@end

 

@implementation TestView2

 

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event

{

    CGRect frame = CGRectMake(0, 0,

                              self.frame.size.width,

                              self.frame.size.height);

    

    BOOL value = (CGRectContainsPoint(frame, point));

    return value;

}

 

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event

{

    NSLog(@"2:xxxx");

}

- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event

{

    NSLog(@"2:yyyy");

}

 

@end

 

 

/*

 * ViewController

 */

@interface DataViewController ()

 

@end

 

@implementation DataViewController

 

- (void)viewDidLoad

{

    [super viewDidLoad];

    

    //白色视图接受点击事件

    self.view.backgroundColor = [UIColor whiteColor];

    

    //红色视图(****注:不接受点击事件****)

    TestView1 *v1 = [[TestView1 alloc] initWithFrame:CGRectMake(50.f, 50.f, 200.f, 200.f)];

    v1.backgroundColor = UIColor.redColor;

    [self.view addSubview:v1];

    

    //黄色视图接受点击事件

    TestView2 *v2 = [[TestView2 alloc] initWithFrame:CGRectMake(0.f, 0.f, 100.f, 100.f)];

    v2.backgroundColor = UIColor.yellowColor;

    [v1 addSubview:v2];

}

 

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event

{

    NSLog(@"3:xxxx");

}

- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event

{

    NSLog(@"3:yyyy");

}

 

@end




原标题:iOS UIView事件隔层传递 pointInside:withEvent:

关键词:IOS

IOS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

Facebook的帖子覆盖率如何提升?:https://www.kjdsnews.com/a/1433112.html
Google广告:关于展示广告图片尺寸你需要知道这些:https://www.kjdsnews.com/a/1433113.html
TikTok电商变阵:https://www.kjdsnews.com/a/1433114.html
海外社媒营销推广怎么做:https://www.kjdsnews.com/a/1433115.html
分享TikTok的电商带货玩法_海外短视频适合带什么样的产品 ,以及什么样的类目最好带货?:https://www.kjdsnews.com/a/1433116.html
亚马逊卖家首选!家居和厨房用品成电商最赚钱品类:https://www.kjdsnews.com/a/1433117.html
北京奥森公园桃花谷要门票吗?需要预约吗?:https://www.vstour.cn/a/335169.html
北京奥森公园桃花谷坐地铁怎么走?:https://www.vstour.cn/a/335170.html
相关文章
我的浏览记录
最新相关资讯
跨境电商服务平台 | 深圳旅行社 | 东南亚物流