iOS 控制元件基類之 UIControl

征途LN發表於2014-02-20

從所有能接受使用者觸控事件的控制元件來看,他們都直接或間接地繼承與UIControl,當然他本身也是繼承與一個最基礎的檢視控制元件UIView,這個下一篇會說。然而,UIControl不能直接被使用,但是它定義了它所有子類的共同行為,提供了共有的介面。

@property(nonatomic,getter=isEnabled) BOOL enabled;   
//預設是YES,如果要禁用這個控制元件,設為NO
                               
@property(nonatomic,getter=isSelected) BOOL selected;    
//當控制元件被選中時,selected屬性被設為YES,當然為了達到某種目的,可以讓控制元件自動選擇自己                          
@property(nonatomic,getter=isHighlighted) BOOL highlighted;
//我只知道,在滑動slide的時候,這個屬性是為YES的

@property(nonatomic) UIControlContentVerticalAlignment contentVerticalAlignment;  
//設定控制元件在垂直方向上如何顯示本身的內容
   
@property(nonatomic) UIControlContentHorizontalAlignment contentHorizontalAlignment;
//設定控制元件如何在水平方向上如何顯示本身的內容 

@property(nonatomic,readonly) UIControlState state;    
//獲取控制元件現在所處的狀態
             
@property(nonatomic,readonly,getter=isTracking) BOOL tracking;
//判斷是否處在在tracking這個狀態

@property(nonatomic,readonly,getter=isTouchInside) BOOL touchInside; 
//判斷是否處在touchInside這個狀態

//線面這四個方法是一個點選事件所處的四個狀態
- (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;   


- (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;
//為控制元件繫結一個事件和這個事件所響應的方法

- (void)removeTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;
//刪除一個或者多個事件的響應動作,使用nil可將給定目標事件的所有動作刪除

- (NSSet *)allTargets; 
//獲取這個控制元件的所有指定動作列表
                                                                    
- (UIControlEvents)allControlEvents;   
//獲取控制元件的所有事件列表                                                   
- (NSArray *)actionsForTarget:(id)target forControlEvent:(UIControlEvents)controlEvent;    


- (void)sendAction:(SEL)action to:(id)target forEvent:(UIEvent *)event;
- (void)sendActionsForControlEvents:(UIControlEvents)controlEvents;
// 如果設計了一個自定義控制元件類,可以使用sendActionsForControlEvent方法,為基本的UIControl事件或自己的自定義事件傳送通知。例如,如果你的控制元件值正在發生變化,就可以傳送相應通知,通過控制元件的程式碼可以指定時間目標,這個通知將被傳播到這些指定的目標                        

相關文章