iOS監聽方法匯總

iOS監聽事件方法(推薦順序從上往下)

  1. addTarget:方法監聽:
    1. 適用范圍:UIControl及其子類
    2. 數據通訊范圍:本文件內
    - (void)addTarget:(nullable id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;
    
  • 手勢
    1. 適用范圍:UI控件
    2. 數據通訊范圍:本文件內
    3. 不足:手勢沖突問題

  • block
    1. 數據通訊范圍:框架內所有文件
    2. 作為成員變量或者作為方法的參數回調block
    3. 優點:多文件間監聽方便,高級開發人員多用block
    4. 不足:要注意block對self、_成員屬性的強引用造成的循環引用

  • 代理
    1. 適用范圍
    a 1個對象只能設置一個代理(假設這個對象只有1個代理屬性)
    b 1個對象能成為多個對象的代理
    2. 數據通訊范圍:框架內所有文件
    3. 比通知規范,建議適用代理多于通知

  • 通知
    1. 適用范圍
    a 1個對象可以發通知給N個對象
    b 1個對象可以接受N個對象發出的通知
    2. 數據通訊范圍:框架內所有文件
    3. 必須得保證通知的名字在發出和監聽時是一致的
    4. 詳見"NSNotificationCenter""NSNotification"章節

  • KVO
    1. 適用范圍:僅僅是能監聽對象屬性的改變(靈活度不如通知和代理)
    2. 數據通訊范圍:本文件內
    3. 本質是為每一個監聽對象添加一個觀察者對象
    4. 詳見"KVO"

  • 利用內部的某些機制
    1. 適用范圍:某些特別的方法,比如重寫UITextField的becomeFirstResponderresignFirstResponder來監聽UITextField的獲得焦點和失去焦點事件
    2. 數據通訊范圍:本文件內

    /**
     *  調用時刻 : 成為第一響應者(開始編輯\彈出鍵盤\獲得焦點)
     */
    - (BOOL)becomeFirstResponder
    {
        // 設置占位文字顏色
        self.zq_placeholderColor = [UIColor whiteColor];
    
        return [super becomeFirstResponder];
    }
    
    /**
     *  調用時刻 : 不做第一響應者(結束編輯\退出鍵盤\失去焦點)
     */
    - (BOOL)resignFirstResponder
    {
        // 恢復默認占位文字顏色
        self.zq_placeholderColor = [UIColor grayColor];
    
        return [super resignFirstResponder];;
    }
    
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 國家電網公司企業標準(Q/GDW)- 面向對象的用電信息數據交換協議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 11,133評論 6 13
  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結起來就是把...
    Dove_iOS閱讀 27,205評論 30 471
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,886評論 18 139
  • 火的發明讓人類與動物分開,文字的發明使得人類進入了文明社會,漢字作為世界上最古老的文字,并且使用至今,它在...
    abby7021閱讀 1,892評論 0 1
  • 嘿,我最親愛的不知道在哪個角落迷路的你: 很冒昧,我突然寫了這封信給你。只是因為,我今天在寒風中瑟縮著的時候,突然...
    陳裊裊閱讀 6,379評論 279 321