iOS-UIControls介绍
iOS-UIControls类介绍
UIControl的继承关系
UIControl是 UIKit中UISwitch(开关)、UIButton(按钮)、UISegmentedControl(分段控件)、UISlider(滑块)、UITextField(文本字段控件)、UIPageControl(分页控件)等控件的父类。同时UIControl也是UIView的子类,当然它也是UIResponse的子类。
下面是UIControl的关系图
UIControl的作用
从上面的关系图中,我们可以看到,UIControl是UIView的子类,因此我们可以像编写UIView一样编写控件,可以调用
addSubview:等方法。同时他也是UIResponse的子类,也是一个响应者。当对屏幕触发一个点击事件,事件通过响应链传到UIContol的子类上。此时将触发以下事件:
- UIResponder父类中触发手势方法(如touchBegan:withEvent)
- UIControl对UIResponse中的手势方法进行封装,转换成一个简单的事件。通过指定的事件处理机制,调用对应的方法。
因此,简单的理解就是,UIControl把复杂的触摸事件封装成了简单的易于使用的控件事件。例如通过UIControl对象处理后,按下按钮的事件就被封装成一个控件事件,而不用去判断触摸屏幕的整个操作过程。
例如按钮的单击事件:UIControlEventTouchUpInside
UIControl-Tracking属性介绍
查看UIControl的声明文件,发现有一个属性不太理解,这里特别来说明一下:
@property(nonatomic,readonly,getter=isTracking) BOOL tracking;
**解释**
A Boolean value that indicates whether the receiver is currently tracking touches related to an event. (read-only)
The value is YES if the receiver is tracking touches; otherwiseNO.
**我的理解**
属性含义:track--跟踪。顾名思义就是当对手势进行跟踪时,此属性为yes。即对control控件使用pan,pinch手势时,此属性为yes。
属性作用:tracking为read-only,只可以观察。用来查看control控件是否处于跟踪手势状态。
既然tracking属性为read-only,只读属性。那么,我们通过什么来控制跟踪状态,我们又通过什么来对pan,pinch手势进行响应呢?
在声明文件tracking下方,有这4个方法,我们可以通过这4个方法来响应手势。
- (BOOL)beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event;
- (BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event;
- (void)endTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event;
- (void)cancelTrackingWithEvent:(UIEvent *)event;
UIControl自定义控件
自定义滑动进度条按钮,用到了tracking跟踪属性,也触发了一个事件消息。
代码比较简单,我在这个不具体说明了。下面是效果图:
代码地址:
http://download.csdn.net/detail/daiyibo123/9158095
转载地址
iOS-UIControls介绍的更多相关文章
- iOS框架介绍
iOS框架介绍 Cocoa Touch GameKit 实现对游戏中心的支持,让用户能够在线共享他们的游戏相关的信息 iOS设备之间蓝牙数据传输 从iOS7开始过期 局域网游 ...
- iOS CoreData 介绍和使用(以及一些注意事项)
iOS CoreData介绍和使用(以及一些注意事项) 最近花了一点时间整理了一下CoreData,对于经常使用SQLite的我来说,用这个真的有点用不惯,个人觉得实在是没发现什么亮点,不喜勿喷啊.不 ...
- iOS CoreData介绍和使用(以及一些注意事项)
iOS CoreData介绍和使用(以及一些注意事项) 最近花了一点时间整理了一下CoreData,对于经常使用SQLite的我来说,用这个真的有点用不惯,个人觉得实在是没发现什么亮点,不喜勿喷啊.不 ...
- MWeb for iOS 测试版介绍
目前已开始第二次测试:MWeb for iOS 版本发布说明,更新至第二次测试版本  上图为 MWeb for iOS 的图标,再次感谢 @Producter http://weibo.com/u/ ...
- 一个iOS 框架介绍:MKNetworkKit
http://blog.csdn.net/kmyhy/article/details/12276287 http://blog.csdn.net/mobailwang/article/details/ ...
- iOS:Masonry介绍与使用
Masonry介绍与使用实践:快速上手Autolayout frame----->autoresing------->autoLayout-------->sizeClasses ...
- iOS多线程介绍
一.线程概述 有些程序是一条直线,起点到终点:有些程序是一个圆,不断循环,直到将它切断.直线的如简单的Hello World,运行打印完,它的生命周期便结束了,像昙花一现那样:圆如操作系统,一直运行直 ...
- IOS JavaScriptCore介绍
本文主要转自:https://www.jianshu.com/p/cdaf9bc3d65d http://blog.csdn.net/u011993697/article/details/515772 ...
- IOS AppStore介绍图的尺寸大小(还有一些自己被拒的分享...)
4s:640*960 5:640*1136 6:750*1334 6P:1242*2208 -------现在新版本的iTunes connect里只上传6P版本的大小就可以了,其他版本苹果会自动分辨 ...
- ios开发介绍
iOS开发概述 •什么是IOS •什么是IOS开发 •为什么要选择IOS开发 •学习IOS开发的准备 1.什么是iOS •iOS是一款由苹果公司开发的操作系统(OS是Operating Sys ...
随机推荐
- Abstract Factory
工厂模式比较好理解,其实就是通过访问工厂返回单一的对象/多个对象.那么抽象工厂就是返回多个抽象对象.这意味工厂返回对象纵向的一个扩展.但是很多时候,抽象工厂是两个维度的扩展,比方说在数据库类型和表对象 ...
- nutch getOutLinks 外链的处理
转载自: http://blog.csdn.net/witsmakemen/article/details/8067530 通过跟踪发现,Fetcher获得网页解析链接没有问题,获得了网页中所有的链接 ...
- Java日志性能
在任何系统中,日志都是非常重要的组成部分,它是反映系统运行情况的重要依据,也是排查问题时的必要线索.绝大多数人都认可日志的重要性,但是又有多少人仔细想过该怎么打日志,日志对性能的影响究竟有多大呢?今天 ...
- uva 11136 - Hoax or what
用两个优先队列来实现,因为队列只能从一头出去: 所以维护一个数组,来标记这个队列的已经出列而另外一个队列没有出列的元素: 到时候再把他们删了就行: #include<cstdio> #in ...
- 如何打造一款五星级的 APP ?
移动互联网大潮来袭!据统计,2015 年平均每天有 1000 个新的应用上架,而这些应用的现状可以说是鱼龙混杂,同是每个人的眼光.品味.意识和利益都不同,因此每人眼中的应用也是不同的.在巨大的市场竞争 ...
- python 大文件以行为单位读取方式比对
http://www.cnblogs.com/aicro/p/3371986.html 先前需要做一个使用python读取大文件(大于1G),并逐条存入内存进行处理的工作.做了很多的尝试,最终看到了如 ...
- Remove highlight from document(Aspose Word 删除高亮)
Thanks for your inquiry. You can do it using DocumentVisitor. Please try using the following code: / ...
- What does the number on the visual studio solution icon represent?
The numbers correspond to the internal version numbers of various editions of Visual Studio http://e ...
- PuTTY 'modmul()' 函数缓冲区下溢漏洞(CVE-2013-4206)
漏洞版本: PuTTY 0.52 - 0.63 漏洞描述: BUGTRAQ ID: 61645 CVE(CAN) ID: CVE-2013-4206 PuTTY是Windows和Unix平台上的PuT ...
- 【转】Android 驱动开发系列四
原文网址:http://www.2cto.com/kf/201304/202040.html 时隔多日,终于都抽出时间来写blog了.废话不多说,接着上一篇,这里将介绍如何编写HAL层(硬件抽象层)对 ...