1. UIControl继承自UIView
  2. UIControl与Target-Action模式
    使用addTarget:action:forControlEvents方法来设置某一个controlEvent对应的方法(action)及要相应这个事件的target。

    target一般是包含uicontrol的rootview对应的vc。
    action有以下三种类型。其中sender对应uicontrol,event对应相应的事件

    - (IBAction)doSomething;
    - (IBAction)doSomething:(id)sender;
    - (IBAction)doSomething:(id)sender forEvent:(UIEvent*)event;
  3. UIControl的State
    UIControl可以同时处于两个状态。链接

    • UIControlStateNormal
      默认状态
    • UIControlStateHighlighted
      触摸事件发生在UIControl内部时,变为高亮态。当在内部touchup或在触摸时间发生在外部时,失去高亮态。是一种非持久态
    • UIControlStateDisabled
      禁止态,不处理触摸事件
    • UIControlStateSelected
      控件被选中,可以持久存在。
    • UIControlStateFocused
  4. 添加target-action

    - (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;
    • target
      要被作用的target,即这个target对应的action要被调用。若为nil,那么系统会顺着响应链寻找。
    • action
      要被调用的方法,不能是nil。
    • controlEvents
      可以包含多个controlEvent,即可以同时为多个controlEvent指定事件 。
  5. 移除target-action

  6. - (void)removeTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;
    • target 要被移除的target,若为nil,哪么移除对应controlEvent的所有target
    • action 要被移除的action。
  7. 人为触发事件

    • - (void)sendAction:(SEL)action to:(id)target forEvent:(UIEvent *)event;

      对指定的target调用指定的action。event可以为nil。
    • - (void)sendActionsForControlEvents:(UIControlEvents)controlEvents;

      遍历这个UIControl的所有target,若对controlEvent指定了对应的action,调用上一个方法。
  8. 状态循环
    一般如果是由Touch Up Inside触发的事件:

    • 手指按到控件,UIControl更新ControlState到Highlighted
    • 手指离开控件,一般UIControl更新ControlState到Selected
    • Highlighted -> Selected之后的状态取决于具体的UIControl子类,其实连UITableViewCell也有这三种状态,Cell还是UIView的子类,这种特殊的状态默认就不会更新回Normal了~
    • 至于在UIbutton中,那就是非常自然的时序:Normal -> Highlighted -> Selected -> Normal啦。

链接:https://www.zhihu.com/question/25284619/answer/30370393

UIControl笔记的更多相关文章

  1. ios学习笔记之UIControl解读

    UIControl,相信大家对其并不陌生吧,比如平常最常用的UIButton就是继承自UIControl的.按照惯例,还是先来看看为什么有UIControl这个类?什么时候用到它? 查下文档就可以看到 ...

  2. 从0开始学Swift笔记整理(五)

    这是跟在上一篇博文后续内容: --Core Foundation框架 Core Foundation框架是苹果公司提供一套概念来源于Foundation框架,编程接口面向C语言风格的API.虽然在Sw ...

  3. iOS学习笔记-地图MapKit入门

    代码地址如下:http://www.demodashi.com/demo/11682.html 这篇文章还是翻译自raywenderlich,用Objective-C改写了代码.没有逐字翻译,如有错漏 ...

  4. iPhone与iPad开发实战读书笔记

    iPhone开发一些读书笔记 手机应用分类1.教育工具2.生活工具3.社交应用4.定位工具5.游戏6.报纸和杂志的阅读器7.移动办公应用8.财经工具9.手机购物应用10.风景区相关应用11.旅游相关的 ...

  5. matlab学习笔记9 高级绘图命令_1 图形对象_根对象,轴对象,用户控制对象,用户菜单对象

    一起来学matlab-matlab学习笔记9 高级绘图命令_1 图形对象_根对象,轴对象,用户控制对象,用户菜单对象 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matl ...

  6. git-简单流程(学习笔记)

    这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...

  7. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  8. SQL Server技术内幕笔记合集

    SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnbl ...

  9. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

随机推荐

  1. kali linux: 网卡监听及扫描网络

    一.网卡监听: kali不支持内置网卡,仅仅支持usb网卡.我用的虚拟机.首先在虚拟机的可移动设备里打开usb网卡的连接,执行ifconfig命令,如下: eth0接口是本地有线网卡信息,lo接口是本 ...

  2. cf499A-Watching a movie

    http://codeforces.com/problemset/problem/499/A A. Watching a movie   You have decided to watch the b ...

  3. Nginx源码完全注释(3)ngx_list.h / ngx_list.c

    列表头文件ngx_list.h #ifndef _NGX_LIST_H_INCLUDED_ #define _NGX_LIST_H_INCLUDED_ #include <ngx_config. ...

  4. 一些好用的 Oracle 批处理和语句

    # 备份脚本 backup.bat @ECHO OFF COLOR 0A SET DaysAgo=1 SET Today=%date:~0,4%%date:~5,2%%date:~8,2% EXP u ...

  5. oracle 创建一个用户,只能访问指定的对象

    1>创建一个ORACLE 的用户 create user username identified by pws; 2>给用户授权  grant connect,resource to us ...

  6. jdk、jre、jvm的区别联系

    jdk包括以下三个东西: D:\Program Files\jdk1.7.0_21\bin\javac.exe和java.exe D:\Program Files\jdk1.7.0_21\jre D: ...

  7. Spring 注解 整理

    首先 在xml中配置 xmlns:context="http://www.springframework.org/schema/context" http://www.spring ...

  8. HUST软件测试1506班: 第0周作业成绩

    说明 本次公布的成绩包含三次作业的结果: 毕博平台课前测试题 第0周作业1:开设博客 第0周作业2:博客阅读和思考 如果同学对作业结果存在异议,可以: 在线平台的第一周在线答疑中创建话题申诉. 或直接 ...

  9. python 数据合并

    1. 数据合并 前言 一.横向合并 1. 基本合并语句 2. 键值名不一样的合并 3. “两个数据列名字重复了”的合并 二.纵向堆叠 统计师的Python日记[第6天:数据合并] 前言 根据我的Pyt ...

  10. Android开发之Tween(补间动画)

    在android中动画主要有三种,①帧动画(http://blog.csdn.net/dmk877/article/details/45893017)这篇文章已经详细的进行了讲解,②补间动画这也是这篇 ...