UIControl笔记
- UIControl继承自UIView
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;
UIControl的State
UIControl可以同时处于两个状态。链接
- UIControlStateNormal
默认状态 - UIControlStateHighlighted
触摸事件发生在UIControl内部时,变为高亮态。当在内部touchup或在触摸时间发生在外部时,失去高亮态。是一种非持久态 - UIControlStateDisabled
禁止态,不处理触摸事件 - UIControlStateSelected
控件被选中,可以持久存在。 - UIControlStateFocused
- UIControlStateNormal
添加target-action
- (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;
target
要被作用的target,即这个target对应的action要被调用。若为nil,那么系统会顺着响应链寻找。action
要被调用的方法,不能是nil。controlEvents
可以包含多个controlEvent,即可以同时为多个controlEvent指定事件 。
移除target-action
- (void)removeTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;
target
要被移除的target,若为nil,哪么移除对应controlEvent的所有targetaction
要被移除的action。
人为触发事件
- (void)sendAction:(SEL)action to:(id)target forEvent:(UIEvent *)event;
对指定的target调用指定的action。event可以为nil。- (void)sendActionsForControlEvents:(UIControlEvents)controlEvents;
遍历这个UIControl的所有target,若对controlEvent指定了对应的action,调用上一个方法。
状态循环
一般如果是由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笔记的更多相关文章
- ios学习笔记之UIControl解读
UIControl,相信大家对其并不陌生吧,比如平常最常用的UIButton就是继承自UIControl的.按照惯例,还是先来看看为什么有UIControl这个类?什么时候用到它? 查下文档就可以看到 ...
- 从0开始学Swift笔记整理(五)
这是跟在上一篇博文后续内容: --Core Foundation框架 Core Foundation框架是苹果公司提供一套概念来源于Foundation框架,编程接口面向C语言风格的API.虽然在Sw ...
- iOS学习笔记-地图MapKit入门
代码地址如下:http://www.demodashi.com/demo/11682.html 这篇文章还是翻译自raywenderlich,用Objective-C改写了代码.没有逐字翻译,如有错漏 ...
- iPhone与iPad开发实战读书笔记
iPhone开发一些读书笔记 手机应用分类1.教育工具2.生活工具3.社交应用4.定位工具5.游戏6.报纸和杂志的阅读器7.移动办公应用8.财经工具9.手机购物应用10.风景区相关应用11.旅游相关的 ...
- matlab学习笔记9 高级绘图命令_1 图形对象_根对象,轴对象,用户控制对象,用户菜单对象
一起来学matlab-matlab学习笔记9 高级绘图命令_1 图形对象_根对象,轴对象,用户控制对象,用户菜单对象 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matl ...
- git-简单流程(学习笔记)
这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- SQL Server技术内幕笔记合集
SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnbl ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
随机推荐
- android-tip-关于SpannableString的使用
如果想单独设置TextView上其中几个字的样式,该怎么办? 答案是使用SpannableString. 使用SpannableString可以为TextView上的某字或某些字设置: 前景色(For ...
- 256. Paint House房屋染色
[抄题]: There are a row of n houses, each house can be painted with one of the three colors: red, blue ...
- 53-C++ CH08 01
http://lx.lanqiao.cn/problem.page?gpid=T407 算法训练 C++ CH08 01 时间限制:1.0s 内存限制:256.0MB 问题描述 已 ...
- spring与mybatis五种整合方法
1.采用数据映射器(MapperFactoryBean)的方式 不用写mybatis映射文件,采用注解方式提供相应的sql语句和输入参数. (1)Spring配置文件: <!-- 引入jdbc ...
- 1.在VC编译器下面为什么每个头文件以及源文件都要包含“stdAfx.h”,那么stdAfx.h中到底存放了什么,用来做什么?
我们知道在windows平台下面很多的文件后缀名中都含有Afx,其实Afx是微软公司的一个技术研发团队名称,vc下的“stdAfx.h”和“stdAfx.cpp”文件就是有他们所研发出来的,为什么要这 ...
- 面向对象的JavaScript-002
1. <script type="text/javascript"> // Define the Person constructor var Person = fun ...
- Openssl req命令
一.简介 req指令用来创建和处理PKCS#10格式的证书 二.语法 openssl req [-inform PEM|DER] [-outform PEM|DER] [-in filename] [ ...
- AID-应用标识符的组成规则
AID:即唯一标识一个应用,分为两部分,RID(5字节)+PIX(最多11字节) RID:注册标识符,由ISO组织来分配,标识一个全球唯一的应用提供商,一般是分配给卡组织,比如分配给Master,比如 ...
- hibernate 多表联合查询
以前用sql实现联合查询 是非常简单的事,只需要写sql语句就可以,第一次遇到hibernate要实现多表联合查询的时候还楞了一下.最后看了下资料,才恍然大悟,hibernate实现多表联合查询跟SQ ...
- critical section的用法
critical section Critical Section: 不论是硬件临界资源,还是软件临界资源,多个进程必须互斥地对它进行访问.每个进程中访问临界资源的那段代码称为临界区(Critical ...