文档章节

父view中添加手势子view不响应问题的解决

HelloSwift
 HelloSwift
发布于 2016/07/25 14:39
字数 209
阅读 6
收藏 0

// 父类view
    UIImageView *back = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, kScreenHeight)];
    back.image = [UIImage imageNamed:@"Default-568h@2x"];
    back.userInteractionEnabled = YES;
    [self.view addSubview:back];
   
    // 父类view中的imageView
    imageView = [[UIImageView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
    imageView.image = [UIImage imageNamed:@"Default-568h@2x"];
    imageView.userInteractionEnabled = YES;
   
    // 父类view中的label
    label = [[UILabel alloc] initWithFrame:CGRectMake(100, 240, 100, 100)];
    label.text = @"label";
    label.backgroundColor = [UIColor grayColor];
    // 此属性必须打开,不然UITouch捕获Label
    label.userInteractionEnabled = YES;
   
    // 父类view中的button
    button = [UIButton buttonWithType:UIButtonTypeCustom];
    [button setTitle:@"button" forState:UIControlStateNormal];
    button.frame = CGRectMake(100, 350, 100, 100);
    button.backgroundColor = [UIColor purpleColor];
    [button addTarget:self action:@selector(btn) forControlEvents:UIControlEventTouchUpInside];

   
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)];
    tap.delegate = self;

    [back addGestureRecognizer:tap];
    [back addSubview:imageView];
    [back addSubview:label];
    [back addSubview:button];
}
- (void)btn
{
    NSLog(@"button");

}

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    // 取消labelimageview响应手势
    if ([touch.view isKindOfClass:[UILabel class]] || touch.view == imageView)
    {
        return NO;
    }
    return YES;

}
- (void)tap:(UITapGestureRecognizer *)tap
{
    NSLog(@"tap.view = %@",tap.view);
}

© 著作权归作者所有

共有 人打赏支持
HelloSwift
粉丝 0
博文 57
码字总数 42780
作品 0
丰台
程序员
加载中

评论(1)

HelloSwift
HelloSwift
不错
iOS-事件响应链的学习

前言 事件处理完整过程; 1,在手指触摸屏幕时,会产生一个事件,系统会把这个事件添加到UIApplication管理的事件队列中。 2,取出队列中最前面的事件,交给主窗口Window。 3,主窗口会逐级向...

麦兜卖鱼丸
2016/06/14
102
1
React Native通过修改ScrollableTabView和ViewPager来解决左右滑动冲突的问题

1.背景   在文章例子中的RN(以下用RN表示React Native)版本是0.43.3。RN官方和非官方提供了很多左右滑动的控件和组件,作者使用的比较多的就是react-native-scrollable-tab-view和react-n...

请叫我百米冲刺
2017/05/05
0
0
iOS开发-关于自定义控件很值得一看的文章(二)

上一次我们一起做一个多段选择的自定义控件,顺便学习UIView的基本属性和方法。 链式响应原理 先简单普及一下响应链原理,我们可以简单地认为iPhone屏幕就是一个容器,我们看到的各种控件(U...

神补刀
2016/03/19
275
0
iOS触摸事件响应链

前言 本文讨论iOS事件中的触摸事件及其响应链,至于加速计事件和远程控制事件不在本文的讨论范畴。 本文讲解的问题: 触摸事件进入app内部是如何传递的?(不包含系统响应阶段) UIResponder响...

indulge_in
2017/11/22
0
0
Android-解决ViewFlipper与ScrollView滑动响应事件拦截的问题【转】

最近在做一个简单的展示界面时,遇到了一个比较棘手的问题。由于要展示多项内容,所以使用ViewFlipper作为水平滑动容器;而每项内容中由于许多文本较长,因此需要使用ScrollView作为垂直滑动...

球球
2016/05/20
13
0

没有更多内容

加载失败,请刷新页面

加载更多

JVM垃圾回收算法

1、新生代与老年代 在 Java 中,堆被划分成两个不同的区域:新生代 ( Young ) 和 老年代 ( Old )。 新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor 和 To Survivor。 Java 中的堆...

初雪之音
14分钟前
0
0
主流的消息队列MQ比较,详解MQ的4类应用场景

目前主流的MQ 1.ZeroMQ 号称最快的消息队列系统,尤其针对大吞吐量的需求场景。 扩展性好,开发比较灵活,采用C语言实现,实际上只是一个socket库的重新封装,如果做为消息队列使用,需要开发...

游人未归
今天
3
0
React 服务器渲染原理解析与实践

网盘下载地址 React 服务器渲染原理解析与实践 本套课程,讲解了React中SSR技术的整个搭建思路及流程,完整的从原理上讲清楚了SSR的概念,重点在于讲解编写SSR框架遇到的各种知识点,以及细节...

qq__2304636824
今天
4
0
Jenkins使用

clean install -Dmaven.test.skip=true 系统设置 全局工具配置 其他的配置类似 构建项目配置

1713716445
今天
2
0
多线程

1. 多线程概念。并发和并行的概念。 多线程指的是一段时间内cpu同时执行多个线程。一个程序至少运行>=1个进程,进程就是运行中的程序,而一个进程至少运行>=1个线程,线程是操作系统能调度的...

鱼想吃肉
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部