UIView进阶-常用控件(一):UIControl

来源:互联网 发布:java 源代码文件 混淆 编辑:程序博客网 时间:2024/06/07 04:27

在UIView的基础上,派生了许多子类,可以使我们能够省去了大量的重新定义视图的时间。常用的控件以及他们的关系图如下所示:


UIControl

控制对象的基础类,主要用于定义界面以及准备action消息和当事件发生时初始调度他们到他们的target的基本实现。

准备和发送action消息

  • -(void)sendAction:(SEL) action to:(id)target forEvent:(UIEvent *)event
    • 响应一个给定事件,提交一个action消息给单例UIApplication对像(通过方法sendAction:fromSender:forEvent:),并调度给一个target。如果没有指定的target,则会提交给responder链中第一个愿意处理的对象。
  • -(void)sendActionsForControlEvents:(UIControlEvents)controlEvents
    • 向给定的控制事件发送action消息,系统在实现中循环调用sendAction:to:forEvent:。其中targets和actions的列表通过之前调用addTarget:action:forControlEvents进行绑定链接的。
  • -(void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents
    • 向内部的调度表中针对特定的事件添加一个target和action对。
  • -(void)removeTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents
    • 从内部调度表中针对特定事件一出一个target和action对。
  • -(NSArray *)actionsForTarget:(id)target forControlEvent:(UIControlEvnet)controlEvent
    • 返回与特定target和控制事件相关的actions
  • -(NSSet *)allTargets
    • 返回与receiver相关的所有target对象
  • -(UIControlEvents)allControlEvents
    • 返回receiver所有相关的控制事件

设置与获取控制属性

  • @property (nonatomic, readonly) UIControlState state
    • receiver的状态,是一个bitmap。例如:当前是disabled和selected状态,则:UIControlStateDisabled | UIControlStateSelected
  • @property (nonatomic, getter=isEnabled)BOOL enabled
    • 表示receiver是否可用,设置为YES:控制可用;设置为NO:控制不可用
  • @property (nonatomic, getter=isSelected)BOOL selected
    • 表示receiver是否为选择状态
  • @property (nonatomic, getter=isHighlighted)BOOL highlighed
    • 表示receiver是否为强调状态
  • @property (nonatomic)UIControlContentVerticalAlignment contentVerticalAlignment
    • receiver的中内容的水平对齐方式
  • @property (nonatomic)UIControlContentHorizontalAlignment contentHorizontalAlignment
    • receiver的中内容的垂直对齐方式

追踪触摸和重绘制控制

  • -(BOOL)beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event
    • 当与touch相关的某个给定的事件进行control边界时向contol发送消息
  • -(BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event
    • 当control追踪一个在边界范围内的触摸时,持续向control发送该消息。返回YES表示control追踪应该继续。
  • -(void)endTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event
    • 当给定事件最后一个触摸完成时向control发送消息,告诉它停止追踪
  • -(void)cancelTrackingWithEvent:(UIEvent *)event
    • 告诉control取消给定事件的追踪
  • @property (nonatomic, readonly, getter=isTracking)BOOL tracking
    •  表示receiver当前是否追踪与触摸相关的事件。设置为YES:追踪触摸事件;设置为NO:不追踪
  • @property (nonatomic, readonly, getter=isTouchInside)BOOL touchInside
    • 表示触摸是否在receiver的边界内。YES:touch在receiver的边界内;NO:不在。

控制事件

0 0
原创粉丝点击