IOS學習筆記10—UIControl對象詳解

來源:互聯網
上載者:User

上篇講到了UITouch和UIEvent事件,簡單回顧一下,UIEvent是一系列UITouch的集合,在IOS中負責響應觸摸事件。另外還提到了響應者鏈的概念,在IOS中,所有事件有一個最先響應者,事件可以沿著響應者鏈向下傳遞。


接下來是UIControl對象

UIControl是UIView的子類,當然也是UIResponder的子類。UIControl是諸如UIButton、UISwitch、UITextField等控制項的父類,它本身也包含了一些屬性和方法,但是不能直接使用UIControl類,它只是定義了子類都需要使用的方法。


UIControl對象採用了一種新的事件處理機制,將前一節直接處理的觸摸事件轉換成簡單操作,這樣可以無需關心使用者訪問控制項的具體方式。觸摸事件到達UIControl對象(由響應者鏈派遣)後,在UIResponder的方法中(如touchBegan:withEvent)中,UIControl將標準的觸摸事件轉換為特殊的控制項事件,簡單的理解就是,UIControl把複雜的觸摸事件封裝成了簡單的便於使用的控制項事件。例如通過UIControl對象處理後,按下按鈕的事件就被封裝成一個控制項事件,而不用去判斷觸控螢幕幕的整個操作過程。

例如按鈕的單擊事件:UIControlEventTouchUpInside


我們所需要知道的是UIControl首先將觸摸事件轉換為控制項事件,再轉換為帶接收放的操作。我們只要編寫第二次轉換的代碼,就是將控制項事件轉換為有目標的操作。


使用addTarget:action:forControlEvents

這是UIControl的一個方法,為指定的控制項對象添加事件,例如:

[controlObj addTarget:recepientObj action @selector(method) froControlEvents : UIControlEvents];

controlObj是要響應事件的控制項對象;

參數receientObj是要把訊息發送到哪裡,一般是self,通常指執行個體化控制項對象的控制器;

action後面是一個選取器,表示該事件需要響應的方法,事件做什麼其實就寫在這個方法裡面;

最後一個是事件類型,表示響應什麼樣的事件。


使用的兩種方式:

1.通過代碼

在代碼中建立一個按鈕,然後為按鈕對象添加addTarget:action:forControlEvents方法,然後編寫回應程式法即可。


2.通過可視化實現

在IB中按住control鍵,點擊滑鼠從按鈕拖動到對應的.h檔案中,就建立了一個IBAction方法,在此方法中編寫事件邏輯便可完成事件響應,用這種方法相比第一種來說更直觀,開發效率也更高。


後續還會使用IOS中其他控制項,但大致原理都是一樣的,後面會結合新的知識來使用這些控制項,包括對控制項的自訂樣式等。

加入我們的QQ群或公眾帳號請查看:Ryan's
zone公眾帳號及QQ群


歡迎關注我的新浪微博和我交流:@唐韌_Ryan

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.