UIControl
来源:互联网 发布:梦里花落知多少评论 编辑:程序博客网 时间:2024/04/29 05:18
在学习Target-Action的时候,我们经常遇到的一块:UIControl,今天我们来学习UIControl
而在Target-Action是如何联系到了UIControl呢? 对了,就是通过target目标对象 和 action选择器下的方法 之间的联系事件Event。
而iOS的Event我们就肯定会联系到响应者类及其相关的机制,而为什么会扯出一个UIControl的类呢?
我们先来看看一张图:
由这个继承关系就可以看得非常清楚了,主要要记住几个主要的UIControl的子类:UIButton,UIDatePicker,UIPageControl,UISegmentedControl,UITextFiled,UISlider,UISwith
iOS为了交互上的Event更加明确在本来继承于UIResponder的UIView基础上由派生出UIControl这个子类,并且:
typedef NS_OPTIONS(NSUInteger, UIControlEvents) { UIControlEventTouchDown = 1 << 0, // on all touch downs UIControlEventTouchDownRepeat = 1 << 1, // on multiple touchdowns (tap count > 1) UIControlEventTouchDragInside = 1 << 2, UIControlEventTouchDragOutside = 1 << 3, UIControlEventTouchDragEnter = 1 << 4, UIControlEventTouchDragExit = 1 << 5, UIControlEventTouchUpInside = 1 << 6, UIControlEventTouchUpOutside = 1 << 7, UIControlEventTouchCancel = 1 << 8, UIControlEventValueChanged = 1 << 12, // sliders, etc. UIControlEventEditingDidBegin = 1 << 16, // UITextField UIControlEventEditingChanged = 1 << 17, UIControlEventEditingDidEnd = 1 << 18, UIControlEventEditingDidEndOnExit = 1 << 19, // 'return key' ending editing UIControlEventAllTouchEvents = 0x00000FFF, // for touch events UIControlEventAllEditingEvents = 0x000F0000, // for UITextField UIControlEventApplicationReserved = 0x0F000000, // range available for application use UIControlEventSystemReserved = 0xF0000000, // range reserved for internal framework use UIControlEventAllEvents = 0xFFFFFFFF};
定义了一系列明确的枚举类型来让你选择相关的事件。而在target-action机制同时提供了绑定target-action-event的方法如:
有了添加,也有移除的相关方法:
- (void)removeTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;
同时还定义了一些列非常形象的事件状态,用法也不难:
typedef NS_OPTIONS(NSUInteger, UIControlState) { UIControlStateNormal = 0, UIControlStateHighlighted = 1 << 0, // used when UIControl isHighlighted is set UIControlStateDisabled = 1 << 1, UIControlStateSelected = 1 << 2, // flag usable by app (see below) UIControlStateApplication = 0x00FF0000, // additional flags available for application use UIControlStateReserved = 0xFF000000 // flags reserved for internal framework use};
但是但是千万别以为iOS的target-action机制就只为UIResponder及其子类(UIViewControler,UIView,UIControl)它们服务,NSTimer内置的一些方法:
+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;
也是target-action机制下的。类似地还有一系列的手势动作等。
别的东西要用再查,最重要的事把关系弄清楚了。
0 0
- UIControl
- UIControl
- UIControl
- UIControl
- UIControl
- UIControl
- UIControl
- UIControl
- UIControl
- UIControl
- UIControl
- UIControl
- UIControl
- UIControl
- UIControl
- UIControl
- UIControl
- UIControl
- 桌面上嵌入窗口(桌面日历)原理探索# 欢迎使用Markdown编辑器写博客
- python 连接 MySQL 数据库
- 插入排序
- jQuery对象和DOM对象之间的相互转换
- 慢慢走,也许更诗意
- UIControl
- 解读Redis运行核心循环过程
- socket和Websocket
- 华为oj【IP地址判断有效性】
- Win server 2012 +IIS8.0下安装SSL证书
- 文件操作以及fprintf()、fscanf()、fgets()、fputs()
- 漫画解读数字证书与数字签名的区别
- 线程流程
- 如何度过生活的低谷?