UIButton右上方添加一个笑button如:

UIButton *button =[UIButton buttonWithType:UIButtonTypeCustom];
    button.frame= CGRectMake(100, 400, 120, 30);
    [self.view addSubview:button];
    UIButton * btn1 = [[UIButton alloc]initWithFrame:CGRectMake(button.frame.size.width-10, -10, 20, 20)];
    [btn1 setImage:[UIImage imageNamed:@"ic_login_weixin"] forState:UIControlStateNormal];
    [button addSubview:btn1];
    button.layer.borderWidth = 1.f;
    button.layer.borderColor = [UIColor blackColor].CGColor;
    [btn1 addTarget:self action:@selector(touches) forControlEvents:UIControlEventTouchUpInside];虽然右上方的but1可以完全显示出来,但是点击btn1不能进行交互,也就是不能触发touches函数。

同理,在UITextFiled的右上方添加一个button如:

UITextField * filed = [[UITextField alloc]initWithFrame:CGRectMake(100, 200, 120, 30)];
    [self.view addSubview:filed];
    filed.borderStyle = UITextBorderStyleRoundedRect;
    filed.layer.masksToBounds = NO;
    UIButton * btn = [[UIButton alloc]initWithFrame:CGRectMake(filed.frame.size.width-5, -5, 10, 10)];
    [filed addSubview:btn];
    btn.backgroundColor = [UIColor redColor];
    self.view.backgroundColor = [UIColor whiteColor];

[btn addTarget:self action:@selector(touches) forControlEvents:UIControlEventTouchUpInside];

点击右上方的btn同样是不能进行交互的,也就是说该事件被filed给拦截了。

实验,将

filed.userInteractionEnabled = NO;

btn.userInteractionEnabled = YES;

同样也会产生冲突不能进行交互。

但是!!!注意!!!但是!!!

实验UIImageView上面添加btn,然后让imageView可以交互,就能完成右上方的小btn点击时间啦!!!

代码如下:

UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(100, 400, 80, 80)];
    UIButton* delBtn = [UIButton buttonWithType:UIButtonTypeCustom];
    delBtn.tag = 101;
    delBtn.frame = CGRectMake(imageView.frame.size.width-20, -10, 30, 30);
    [delBtn setImage:[UIImage imageNamed:@"ic_login_weixin"] forState:UIControlStateNormal];
    [delBtn addTarget:self action:@selector(delBtntouches) forControlEvents:UIControlEventTouchUpInside];
    [imageView addSubview:delBtn];
    [self.view addSubview:imageView];
    imageView.image = [UIImage imageNamed:@"addimage"];
    imageView.backgroundColor = [UIColor redColor];
    UITapGestureRecognizer * ges = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(imageViewTouched)];
    [imageView addGestureRecognizer:ges];
    imageView.userInteractionEnabled= YES;

而且非常有意思的是,当点击除了delBtn的imageView的其它部分,响应的都是imageViewTouched,而点击了delBtn,则相应的是delBtntouches,但是delBtn超出imageview的部分点击也是没有效的。

由此我们可以推论出:uilabel已定也是可以这样来进行小btn的添加

最后:该理论的实际应用:

我们可以 在原来的图像上自定义来写一些图片增删的功能了。

  

UITextFiled,UIButton,UIImageView交互相互之间的事件拦截的更多相关文章

  1. iOS基础 - UIButton - UIImageView

    封装思想:将相同的重复东西保存到方法里,不同的东西用参数代替.不相同的东西交给方法调用者,相同东西自己搞定. 一.UIButton和UIImageView的区别 1.显示图片 1> UIImag ...

  2. UIButton无法响应点击事件

    一.问题描述 因为项目需要,需要UITableView上添加固定的筛选表头,一直固定,不能随UITableView滚动.所以直接将表头与UITableView分离,将它添加到控制器的UIView上,即 ...

  3. 讲讲Android事件拦截机制

    简介 什么是触摸事件?顾名思义,触摸事件就是捕获触摸屏幕后产生的事件.当点击一个按钮时,通常会产生两个或者三个事件--按钮按下,这是事件一,如果滑动几下,这是事件二,当手抬起,这是事件三.所以在And ...

  4. android事件拦截处理机制详解

    前段时间刚接触过Android手机开发,对它的事件传播机制不是很了解,虽然网上也查了相关的资料,但是总觉得理解模模糊糊,似是而非,于是自己就写个小demo测试了一下.总算搞明白了它的具体机制.写下自己 ...

  5. Android 事件拦截机制一种粗鄙的解释

    对于Android事件拦截机制,相信对于大多数Android初学者是一个抓耳挠腮难于理解的问题.其实理解这个问题并不困难. 首先,你的明白事件拦截机制到底是怎么一回事?这里说的事件拦截机制,指的是对触 ...

  6. Unity3D研究院编辑器之Editor的GUI的事件拦截

    OnGUI是Unity上一个时代的UI系统,而现在运行时的UI系统已经被UGUI取代,但是Editor的UI还是在用老的这一套GUI系统.比如unity编辑器里的所有窗口,布局,按钮,拖动条.滚动等等 ...

  7. Android开发系列之事件拦截机制

    对于Android开发者来说理解事件传递机制的重要性,我想应该是不言而喻的.在一个Activity里面,我们经常会重写onTouchEvent事件,可是重写结束之后,对于是返回true还是返回fals ...

  8. Android事件拦截机制简单分析

    前一阶段,在学习的时候,遇到了我觉得的我接触安卓以来的最多的一次事件拦截出来,那个项目,用到了slidemenu側滑菜单条,然后加上tab标签,还有轮播广告,listview上下滑动.viewpage ...

  9. (网页)HTML5 Canvas ( 事件交互, 点击事件为例 ) isPointInPath(转)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

随机推荐

  1. HDU 5375 Gray code 格雷码(水题)

    题意:给一个二进制数(包含3种符号:'0'  '1'  '?'  ,问号可随意 ),要求将其转成格雷码,给一个序列a,若转成的格雷码第i位为1,则得分+a[i].求填充问号使得得分最多. 思路:如果了 ...

  2. USACO 2013 Nov Silver Pogo-Cow

    最近因为闲的蛋疼(停课了),所以开始做一些 USACO 的银组题.被完虐啊 TAT 貌似 Pogo-Cow 这题是 2013 Nov Silver 唯一一道可说的题目? Pogo-Cow Descri ...

  3. 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:2.搭建环境-2.3配置共享磁盘

    2.3.配置共享磁盘 2.3.1.创建共享磁盘 在cmd中进入WMware Workstation 10.0 安装目录: 1.创建存储Oracle Clusterware文件  (Oracle Clu ...

  4. PHP中设置、使用、删除Cookie方法

    1.设置Cookie PHP用SetCookie函数来设置Cookie.必须注意的一点是:Cookie是HTTP协议头的一部分,用于浏览器和服务器之间传递信息,所以必须在任何属于HTML文件本身的内容 ...

  5. 嵌入式 uboot以及kernel添加看门狗临时记录(个人记录未整理乱)

    Uboot_Kernerl_Add_Watch_Dog: U-Boot 2010.06 (Nov 01 2013 - 15:28:44) DRAM:  128 MiBCheck spi flash c ...

  6. poj 2185(二维kmp)

    题意:让你求一个最小的覆盖子矩阵. 分析:首先第一点是确定的:那就是这个子矩阵肯定位于左上角,然后按行考虑,求出每一行可能的重复子串的长度,然后取所有行都存在并且长度最短的长度最为最小子矩阵的宽, 最 ...

  7. ylb:多表的连接与练习(第三方关联表的应用)

    ylbtech-SQL Server:SQL Server-多表的连接与练习(第三方关联表的应用) SQL Server 多表的连接与练习(第三方关联表的应用). 1,多表的连接与练习(第三方关联表的 ...

  8. ADO.NET+Access: 2,至少一个参数没有被指定值

    ylbtech-Error-ADO.NET+Access: 2,至少一个参数没有被指定值. 1.A,错误代码返回顶部  2,至少一个参数没有被指定值. 1.B,出错原因分析返回顶部  未解决 1.C, ...

  9. Delphi 注册文件类型 设置文件图标

        {------------------------------------------------------------------------------- @过程名: slpert -& ...

  10. 使用LabVIEW如何生成应用程序(exe)和安装程序(installer)

    主要软件:   LabVIEW Development Systems>>LabVIEW Professional Development System主要软件版本:   2012主要软件 ...