iOS-UIControls类介绍

UIControl的继承关系

UIControl是 UIKit中UISwitch(开关)、UIButton(按钮)、UISegmentedControl(分段控件)、UISlider(滑块)、UITextField(文本字段控件)、UIPageControl(分页控件)等控件的父类。同时UIControl也是UIView的子类,当然它也是UIResponse的子类。

下面是UIControl的关系图

UIControl的作用

  • 从上面的关系图中,我们可以看到,UIControl是UIView的子类,因此我们可以像编写UIView一样编写控件,可以调用addSubview:等方法。

  • 同时他也是UIResponse的子类,也是一个响应者。当对屏幕触发一个点击事件,事件通过响应链传到UIContol的子类上。此时将触发以下事件:

    1. UIResponder父类中触发手势方法(如touchBegan:withEvent)
    2. 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

转载地址

http://blog.csdn.net/ryantang03/article/details/7754597

http://blog.csdn.net/iukey/article/details/7300412

iOS-UIControls介绍的更多相关文章

  1. iOS框架介绍

    iOS框架介绍      Cocoa Touch   GameKit  实现对游戏中心的支持,让用户能够在线共享他们的游戏相关的信息  iOS设备之间蓝牙数据传输   从iOS7开始过期   局域网游 ...

  2. iOS CoreData 介绍和使用(以及一些注意事项)

    iOS CoreData介绍和使用(以及一些注意事项) 最近花了一点时间整理了一下CoreData,对于经常使用SQLite的我来说,用这个真的有点用不惯,个人觉得实在是没发现什么亮点,不喜勿喷啊.不 ...

  3. iOS CoreData介绍和使用(以及一些注意事项)

    iOS CoreData介绍和使用(以及一些注意事项) 最近花了一点时间整理了一下CoreData,对于经常使用SQLite的我来说,用这个真的有点用不惯,个人觉得实在是没发现什么亮点,不喜勿喷啊.不 ...

  4. MWeb for iOS 测试版介绍

    目前已开始第二次测试:MWeb for iOS 版本发布说明,更新至第二次测试版本  上图为 MWeb for iOS 的图标,再次感谢 @Producter http://weibo.com/u/ ...

  5. 一个iOS 框架介绍:MKNetworkKit

    http://blog.csdn.net/kmyhy/article/details/12276287 http://blog.csdn.net/mobailwang/article/details/ ...

  6. iOS:Masonry介绍与使用

    Masonry介绍与使用实践:快速上手Autolayout   frame----->autoresing------->autoLayout-------->sizeClasses ...

  7. iOS多线程介绍

    一.线程概述 有些程序是一条直线,起点到终点:有些程序是一个圆,不断循环,直到将它切断.直线的如简单的Hello World,运行打印完,它的生命周期便结束了,像昙花一现那样:圆如操作系统,一直运行直 ...

  8. IOS JavaScriptCore介绍

    本文主要转自:https://www.jianshu.com/p/cdaf9bc3d65d http://blog.csdn.net/u011993697/article/details/515772 ...

  9. IOS AppStore介绍图的尺寸大小(还有一些自己被拒的分享...)

    4s:640*960 5:640*1136 6:750*1334 6P:1242*2208 -------现在新版本的iTunes connect里只上传6P版本的大小就可以了,其他版本苹果会自动分辨 ...

  10. ios开发介绍

    iOS开发概述 •什么是IOS •什么是IOS开发 •为什么要选择IOS开发 •学习IOS开发的准备   1.什么是iOS   •iOS是一款由苹果公司开发的操作系统(OS是Operating Sys ...

随机推荐

  1. Abstract Factory

    工厂模式比较好理解,其实就是通过访问工厂返回单一的对象/多个对象.那么抽象工厂就是返回多个抽象对象.这意味工厂返回对象纵向的一个扩展.但是很多时候,抽象工厂是两个维度的扩展,比方说在数据库类型和表对象 ...

  2. nutch getOutLinks 外链的处理

    转载自: http://blog.csdn.net/witsmakemen/article/details/8067530 通过跟踪发现,Fetcher获得网页解析链接没有问题,获得了网页中所有的链接 ...

  3. Java日志性能

    在任何系统中,日志都是非常重要的组成部分,它是反映系统运行情况的重要依据,也是排查问题时的必要线索.绝大多数人都认可日志的重要性,但是又有多少人仔细想过该怎么打日志,日志对性能的影响究竟有多大呢?今天 ...

  4. uva 11136 - Hoax or what

    用两个优先队列来实现,因为队列只能从一头出去: 所以维护一个数组,来标记这个队列的已经出列而另外一个队列没有出列的元素: 到时候再把他们删了就行: #include<cstdio> #in ...

  5. 如何打造一款五星级的 APP ?

    移动互联网大潮来袭!据统计,2015 年平均每天有 1000 个新的应用上架,而这些应用的现状可以说是鱼龙混杂,同是每个人的眼光.品味.意识和利益都不同,因此每人眼中的应用也是不同的.在巨大的市场竞争 ...

  6. python 大文件以行为单位读取方式比对

    http://www.cnblogs.com/aicro/p/3371986.html 先前需要做一个使用python读取大文件(大于1G),并逐条存入内存进行处理的工作.做了很多的尝试,最终看到了如 ...

  7. Remove highlight from document(Aspose Word 删除高亮)

    Thanks for your inquiry. You can do it using DocumentVisitor. Please try using the following code: / ...

  8. 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 ...

  9. PuTTY 'modmul()' 函数缓冲区下溢漏洞(CVE-2013-4206)

    漏洞版本: PuTTY 0.52 - 0.63 漏洞描述: BUGTRAQ ID: 61645 CVE(CAN) ID: CVE-2013-4206 PuTTY是Windows和Unix平台上的PuT ...

  10. 【转】Android 驱动开发系列四

    原文网址:http://www.2cto.com/kf/201304/202040.html 时隔多日,终于都抽出时间来写blog了.废话不多说,接着上一篇,这里将介绍如何编写HAL层(硬件抽象层)对 ...