深入淺析IOS中UIControl
UIEvent是一系列UITouch的集合,在IOS中負(fù)責(zé)響應(yīng)觸摸事件。另外還提到了響應(yīng)者鏈的概念,在IOS中,所有事件有一個(gè)最先響應(yīng)者,事件可以沿著響應(yīng)者鏈向下傳遞。
接下來(lái)是UIControl對(duì)象
UIControl是UIView的子類(lèi),當(dāng)然也是UIResponder的子類(lèi)。UIControl是諸如UIButton、UISwitch、UITextField等控件的父類(lèi),它本身也包含了一些屬性和方法,但是不能直接使用UIControl類(lèi),它只是定義了子類(lèi)都需要使用的方法。
UIControl對(duì)象采用了一種新的事件處理機(jī)制,將前一節(jié)直接處理的觸摸事件轉(zhuǎn)換成簡(jiǎn)單操作,這樣可以無(wú)需關(guān)心用戶(hù)訪問(wèn)控件的具體方式。觸摸事件到達(dá)UIControl對(duì)象(由響應(yīng)者鏈派遣)后,在UIResponder的方法中(如touchBegan:withEvent)中,UIControl將標(biāo)準(zhǔn)的觸摸事件轉(zhuǎn)換為特殊的控件事件,簡(jiǎn)單的理解就是,UIControl把復(fù)雜的觸摸事件封裝成了簡(jiǎn)單的易于使用的控件事件。例如通過(guò)UIControl對(duì)象處理后,按下按鈕的事件就被封裝成一個(gè)控件事件,而不用去判斷觸摸屏幕的整個(gè)操作過(guò)程。
例如按鈕的單擊事件:UIControlEventTouchUpInside
我們所需要知道的是UIControl首先將觸摸事件轉(zhuǎn)換為控件事件,再轉(zhuǎn)換為帶接收放的操作。我們只要編寫(xiě)第二次轉(zhuǎn)換的代碼,就是將控件事件轉(zhuǎn)換為有目標(biāo)的操作。
使用addTarget:action:forControlEvents
這是UIControl的一個(gè)方法,為指定的控件對(duì)象添加事件,例如:
[controlObj addTarget:recepientObj action @selector(method) froControlEvents : UIControlEvents];
controlObj是要響應(yīng)事件的控件對(duì)象;
參數(shù)receientObj是要把消息發(fā)送到哪里,一般是self,通常指實(shí)例化控件對(duì)象的控制器;
action后面是一個(gè)選擇器,表示該事件需要響應(yīng)的方法,事件做什么其實(shí)就寫(xiě)在這個(gè)方法里面;
最后一個(gè)是事件類(lèi)型,表示響應(yīng)什么樣的事件。
使用的兩種方式:
1.通過(guò)代碼
在代碼中新建一個(gè)按鈕,然后為按鈕對(duì)象添加addTarget:action:forControlEvents方法,然后編寫(xiě)響應(yīng)方法即可。
2.通過(guò)可視化實(shí)現(xiàn)
在IB中按住control鍵,點(diǎn)擊鼠標(biāo)從按鈕拖動(dòng)到對(duì)應(yīng)的.h文件中,就建立了一個(gè)IBAction方法,在此方法中編寫(xiě)事件邏輯便可完成事件響應(yīng),用這種方法相比第一種來(lái)說(shuō)更直觀,開(kāi)發(fā)效率也更高。
后續(xù)還會(huì)使用IOS中其他控件,但大致原理都是一樣的,后面會(huì)結(jié)合新的知識(shí)來(lái)使用這些控件,包括對(duì)控件的自定義樣式等。
相關(guān)文章
iOS開(kāi)發(fā)之統(tǒng)計(jì)Xcode工程的代碼行數(shù)
這篇文章主要給大家介紹了在iOS開(kāi)發(fā)中,如果想要統(tǒng)計(jì)Xcode工程的代碼行數(shù)該如何實(shí)現(xiàn),文章給出了詳細(xì)的方法和示例代碼,對(duì)大家的理解和學(xué)習(xí)很有幫助,本文中還分享了統(tǒng)計(jì)java文件和xml文件的代碼,有需要的朋友們下面來(lái)一起看看吧。2016-10-10iOS實(shí)現(xiàn)手動(dòng)和自動(dòng)屏幕旋轉(zhuǎn)
這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)手動(dòng)和自動(dòng)屏幕旋轉(zhuǎn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07iOS實(shí)現(xiàn)動(dòng)態(tài)元素的引導(dǎo)圖效果
這篇文章給大家介紹了iOS實(shí)現(xiàn)動(dòng)態(tài)元素的引導(dǎo)圖效果的步驟,文章給出了示例代碼介紹的很詳細(xì),有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。2016-09-09詳解iOS11關(guān)于導(dǎo)航欄問(wèn)題
本篇文章主要介紹了詳解iOS11關(guān)于導(dǎo)航欄問(wèn)題,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10iOS開(kāi)發(fā)之使用Storyboard預(yù)覽UI在不同屏幕上的運(yùn)行效果
使用Storyboard做開(kāi)發(fā)效率非常高,為了防止在團(tuán)隊(duì)中發(fā)生沖突,采取的解決辦法是負(fù)責(zé)UI開(kāi)發(fā)的同事最好每人維護(hù)一個(gè)Storyboard, 公用的組件使用輕量級(jí)的xib或者純代碼來(lái)實(shí)現(xiàn),下面小編就給大家介紹如何使用Storyboard預(yù)覽UI在不同屏幕上的運(yùn)行效果,需要的朋友可以參考下2015-08-08iOS粒子路徑移動(dòng)效果 iOS實(shí)現(xiàn)QQ拖動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了iOS粒子路徑移動(dòng)效果,iOS實(shí)現(xiàn)QQ拖動(dòng)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07iOS中設(shè)置網(wǎng)絡(luò)超時(shí)時(shí)間+模擬的方法詳解
這篇文章主要介紹了在iOS中設(shè)置網(wǎng)絡(luò)超時(shí)時(shí)間+模擬的方法,文中介紹的非常詳細(xì),相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)跟著小編一起來(lái)學(xué)習(xí)學(xué)習(xí)吧。2017-04-04