• Cocoa touch(五):UIControl


    UIControl,是所有可响应事件控件的基类,通过观察者模式实现了事件的处理,

    注册事件观察者

    // target是注册的观察者,action为响应方法,后边是观察的事件
    - (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;

    发送事件

    // 触发某控件的事件
    - (void)sendAction:(SEL)action to:(id)target forEvent:(UIEvent *)event;

    控件具有几种状态,常用的是前面4种,看后面注释

    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
    };
    @interface UIControl : UIView {
    
    @property(nonatomic,getter=isEnabled) BOOL enabled;                                  // default is YES. if NO, ignores touch events and subclasses may draw differently
    @property(nonatomic,getter=isSelected) BOOL selected;                                // default is NO may be used by some subclasses or by application
    @property(nonatomic,getter=isHighlighted) BOOL highlighted;                          // default is NO. this gets set/cleared automatically when touch enters/exits during tracking and cleared on up
    @property(nonatomic) UIControlContentVerticalAlignment contentVerticalAlignment;     // how to position content vertically inside control. default is center
    @property(nonatomic) UIControlContentHorizontalAlignment contentHorizontalAlignment; // how to position content hozontally inside control. default is center
    
    @property(nonatomic,readonly) UIControlState state;                  // could be more than one state (e.g. disabled|selected). synthesized from other flags.
    @property(nonatomic,readonly,getter=isTracking) BOOL tracking;
    @property(nonatomic,readonly,getter=isTouchInside) BOOL touchInside; // valid during tracking only
    
    - (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;   // event may be nil if cancelled for non-event reasons, e.g. removed from window
    
    // add target/action for particular event. you can call this multiple times and you can specify multiple target/actions for a particular event.
    // passing in nil as the target goes up the responder chain. The action may optionally include the sender and the event in that order
    // the action cannot be NULL. Note that the target is not retained.
    - (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;
    
    // remove the target/action for a set of events. pass in NULL for the action to remove all actions for that target
    - (void)removeTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;
    
    // get info about target & actions. this makes it possible to enumerate all target/actions by checking for each event kind
    - (NSSet *)allTargets;                                                                     // set may include NSNull to indicate at least one nil target
    - (UIControlEvents)allControlEvents;                                                       // list of all events that have at least one action
    - (NSArray *)actionsForTarget:(id)target forControlEvent:(UIControlEvents)controlEvent;    // single event. returns NSArray of NSString selector names. returns nil if none
    
    // send the action. the first method is called for the event and is a point at which you can observe or override behavior. it is called repeately by the second.
    - (void)sendAction:(SEL)action to:(id)target forEvent:(UIEvent *)event;
    - (void)sendActionsForControlEvents:(UIControlEvents)controlEvents;                        // send all actions associated with events
    
    @end
  • 相关阅读:
    leetcode167 Two Sum II
    leetcode18 4Sum
    leetcode15 three sum
    leetcode-1-Two Sum
    SQL优化——select
    Hadoop 集群搭建
    虚拟机中的两台主机怎么相互拷贝文件
    doker5
    docker4
    docker3
  • 原文地址:https://www.cnblogs.com/iprogrammer/p/3252571.html
Copyright © 2020-2023  润新知