自定义控件-UIControl
来源:互联网 发布:游戏破解编程 编辑:程序博客网 时间:2024/06/09 21:39
UIControl是控件的基类,例如:按钮,滑块等将用户的目的传递到应用程序中。UIContol不能直接的实例化,它只能通过继承的方式为子类提供公共的接口和动作结构。
UIControl的主要角色是定义一套接口和基础实现,为了当确定的事件发生的时候(比如点击了按钮)准备好动作消息(Action)并开始派发它们到自己的目标(Target,eg:UIViewController)。
UIControl类通常也包含多种设置和获取控件状态的方法-例如,决定一个控件是否使能或者高亮状态-和它定义了一些跟踪(在控件范围内)触摸事件的方法。这些跟踪方法可以被UIControl的子类所继承。
子类化注意事项
你想扩展一个UIControl子类可能是下面两个原因:
•通过特殊的事件(UIEvent)观察或者修改派发的动作消息(action)给目标(target).
实现方法,重载sendAction:to:forEvent:,评估传入的方法,目标对象,或者事件的位掩码,并按要求继续。
•提供自定义的跟踪行为(例如,改变高亮的外观)
实现方法,重载一个或者多个下面的方法:
beginTrackingWithTouch:withEvent:
, continueTrackingWithTouch:withEvent:
, endTrackingWithTouch:withEvent:
.准备并发送动作消息
- - sendAction:to:forEvent:
响应给定的事件,转发一个动作消息给应用程序派发给目标。
- (void)sendAction:(SEL)
action
to:(id)target
forEvent:(UIEvent *)
event
参数表
action
选择器识别的消息,它不能为空
target
目标对象—动作消息发送的对象,如果为空,接受对象遍历响应链并发送动作消息给第一个愿意影响的对象
event
一个代表事件的对象(在UIControl中很常见)它产出动作消息。事件可以是空的如果动作直接被调用而不是需要通过一个事件生成。例如,一个值改变消息可能是因为程序执行的结果,而不是用户触摸的结果
UIControl通过转发一个目标动作给单例UIApplication(在它的sendAction:to:fromSender:forEvent:方法中)来实现这个方法来派发给它的目标,或者如果它没有确定的目标,派发给响应链中第一个愿意处理这个消息的对象中。子类可能要重载这个方法来观察或者修改动作转发的行为。每进行一次指定控件的事件,可能会重复用
sendActionsForControlEvents:
这个方法的实现,- - sendActionsForControlEvents:
发送动作消息到给定的控制事件
- (void)sendActionsForControlEvents:(UIControlEvents)
controlEvents
参数表
controlEvents
位掩码,其主标志指定发送哪个动作消息到控制事件
UIControl实现这个方法来发送所有controlEvents的动作消息,在进程中重复调用,查找目标和动作列表在
addTarget:action:forControlEvents:
.之前构造。- - addTarget:action:forControlEvents:
在内部的派发表中给特殊时间添加一个目标和动作
- (void)addTarget:(id)
target
action:(SEL)action
forControlEvents:(UIControlEvents)
controlEvents
参数表
target
目标对象-动作消息的发送对象,如果它为空,那么将会搜索响应链中愿意响应这个动作消息的对象
action
一个选择器识别的动作消息,它不能为空
controlEvents
一个位掩码识别的被消息动作发送的控制事件
你可能会多次调用这个方法,并且你可能需要为一个特殊的事件识别多个目标-动作组,动作消息可以是可选的包含发送者和事件作为参数
当你调用这个方法的时候,目标没有被保留。
- - removeTarget:action:forControlEvents:
在内部派发表中将特定事件的目标和动作移除
- (void)removeTarget:(id)
target
action:(SEL)action
forControlEvents:(UIControlEvents)
controlEvents
参数表
target
目标对象—动作消息的发送对象,传入nil可以移除动作和指定控制事件的所有目标
action
一个识别动作的选择器,出入NULL来移除所有的动作消息对
controlEvents
一个位掩码识别的,被消息动作发送的控制事件
- actionsForTarget:forControlEvent:
返回所有跟动作事件和特殊指定控制事件相关的动作
- (NSArray *)actionsForTarget:(id)
target
forControlEvent:(UIControlEvents)
controlEvent
参数表
target
目标对象—动作消息的发送对象,传入nil可以移除动作和指定控制事件的所有目标。你必须传入一个相匹配的明确目标,不要传入nil
controlEvent
一个位掩码识别的被消息动作发送的控制事件
一个包含NSString类型的方法名字的数组或者没有与控制事件相关的方法则则为nil
- - allTargets
返回与接受者相关联的所有目标对象
- (NSSet *)allTargets
集合里面的目标是动作消息的接受者,
- - allControlEvents
返回与接受者相关联的所有控制事件
- (UIControlEvents)allControlEvents
一个或者多个
UIControlEvents
常量指定与当前接受者相关联的的控制事件存取方法控制属性
@property(nonatomic, readonly) UIControlState state
一个或者多个UIControlState位掩码常量来指定UIControl对象的状态
Control Events
enum{
UIControlEventTouchDown= 1 << 0,
控件被按下去的事件
UIControlEventTouchDownRepeat= 1 << 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,
当控件的值发生改变时,发送通知。用于滑块,分段控件,以及其他取值控件。
UIControlEventEditingDidBegin= 1 << 16,
文本控件开始编辑时发送通知
UIControlEventEditingChanged= 1 << 17,
文本控件中的内容被改变是发送通知
UIControlEventEditingDidEnd= 1 << 18,
文本控件结束编辑的时候发送通知
UIControlEventEditingDidEndOnExit= 1 << 19,
文本控件内通过按下回车(或等价行为)结束编辑时,发送通知。
UIControlEventAllTouchEvents= 0x00000FFF,
通知所有触摸事件
UIControlEventAllEditingEvents= 0x000F0000,
通知所有关于文本编辑的时间。
UIControlEventApplicationReserved= 0x0F000000,
为应用程序预留
UIControlEventSystemReserved= 0xF0000000,
为系统内部框架预留
UIControlEventAllEvents= 0xFFFFFFFF };
通知所有事件
0 0
- 自定义控件-UIControl
- UIControl IOS控件编程
- UIControl IOS控件编程
- UIControl控件编程
- UIControl 控件编程
- UIControl IOS控件编程
- UIControl iOS控件
- UI控件之UIControl
- UIControl 控件简介
- 关于自定义UIControl
- iOS自定义控件教程(四)UIControl - 幕后的英雄
- 继承自UIControl的自定义控件,监测其所有行为的方法
- 浅谈UIControl IOS控件编程
- 8-26 UIControl UIGestureRecognizer 控件
- UIControl控件的综合使用
- UIControl类控件(一)
- UIControl类控件(二)
- UIControl类控件(三)
- 初记博客
- uva 585(字符串)
- MySQL被慢sql hang住了,用shell脚本快速清除不断增长的慢sql的办法
- 如何快速的修改参考文献
- android Service重启问题,结合AlarmManager实现定时任务
- 自定义控件-UIControl
- hive UDF 过滤字符串中的中英文标点符号
- SQL方法~获取给定时间所在周一至周日的日期范围
- 计算MySQL的内存峰值公式
- NYOJ 76 超级台阶 DP
- Skype for Business Server 2015操作系统要求
- innobackupex-1.5.1: Too many command line arguments
- java时间格式转化(毫秒 to 00:00)
- Excel 培训笔记