#01-UIView的拖拽#

01-UIView的拖拽

1.ios當(dāng)中常用的事件分為三種:
    觸摸事件
    加速計(jì)事件
    遠(yuǎn)程控制事件
    
2.什么是響應(yīng)者對(duì)象?
    繼承了UIResponds的對(duì)象我們稱它為響應(yīng)者對(duì)象
    UIApplication议街、UIViewController纺蛆、UIView都繼承自UIResponder
    因此它們都是響應(yīng)者對(duì)象痹束,都能夠接收并處理事件

3.為什么說(shuō)繼承了UIResponder就能夠處理事件?
    因?yàn)閁IResponder內(nèi)部提供了以下方法來(lái)處理事件
    
    比如觸摸事件會(huì)調(diào)用以下方法:
    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
    - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
    - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
    - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;
    加速計(jì)事件會(huì)調(diào)用:
    - (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event;
    - (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event;
    - (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event;
    遠(yuǎn)程控制事件會(huì)調(diào)用:
    - (void)remoteControlReceivedWithEvent:(UIEvent *)event;
    
4.如何監(jiān)聽(tīng)UIView的觸摸事件?
    想要監(jiān)聽(tīng)UIViiew的觸摸事件,首先第一步要自定義UIView,
    因?yàn)橹挥袑?shí)現(xiàn)了UIResponder的事件方法才能夠監(jiān)聽(tīng)事件.

    UIView的觸摸事件主要有:
    一根或者多根手指開(kāi)始觸摸view所宰,系統(tǒng)會(huì)自動(dòng)調(diào)用view的下面方法.
    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
    
    一根或者多根手指在view上移動(dòng)時(shí),系統(tǒng)會(huì)自動(dòng)調(diào)用view的下面方法
    (隨著手指的移動(dòng)五垮,會(huì)持續(xù)調(diào)用該方法,也就是說(shuō)這個(gè)方法會(huì)調(diào)用很多次)
    - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
    
    一根或者多根手指離開(kāi)view扎附,系統(tǒng)會(huì)自動(dòng)調(diào)用view的下面方法
    - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
    
    參數(shù)說(shuō)明:
        touches:
            touches中存放的都是UITouch對(duì)象,它是一個(gè)NSSet集合.
            UITouch對(duì)象它就是用來(lái)保存手指相關(guān)聯(lián)的信息.包括位置,時(shí)間,階段等信息.
            每一個(gè)手指對(duì)應(yīng)著一個(gè)UITouch對(duì)象.
            這個(gè)UITouch是系統(tǒng)自動(dòng)幫我們創(chuàng)建的,當(dāng)手指移動(dòng)時(shí),系統(tǒng)會(huì)更新同一個(gè)UITouch對(duì)象,
            使它能夠一直保存該手指在的觸摸位置
            
            通過(guò)獲取UITouch屬性,我們可以獲得觸摸產(chǎn)生時(shí)所處的窗口,觸摸的View,時(shí)間,點(diǎn)擊的次數(shù)等,
            這些都可以在通過(guò)UITouch獲取.
            
            還可以通過(guò)UITouch提供的方法獲取當(dāng)前手指所在的點(diǎn),以及上一個(gè)手指所在的點(diǎn).
            取當(dāng)前手指所在的點(diǎn)
            - (CGPoint)locationInView:(UIView *)view;
            獲取上一個(gè)觸摸點(diǎn)的位置.
            - (CGPoint)previousLocationInView:(UIView *)view;

        event:
            每產(chǎn)生一個(gè)事件抠忘,就會(huì)產(chǎn)生一個(gè)UIEvent對(duì)象
            UIEvent:稱為事件對(duì)象撩炊,記錄事件產(chǎn)生的時(shí)刻和類型


    一次完整的觸摸過(guò)程,會(huì)經(jīng)歷3個(gè)狀態(tài):
    觸摸開(kāi)始:- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
    觸摸移動(dòng):- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
    觸摸結(jié)束:- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
    觸摸取消(可能會(huì)經(jīng)歷):- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
    一次完整的觸摸過(guò)程中崎脉,只會(huì)產(chǎn)生一個(gè)事件對(duì)象拧咳,4個(gè)觸摸方法都是同一個(gè)event參數(shù)
    如果兩根手指同時(shí)觸摸一個(gè)view,那么view只會(huì)調(diào)用一次touchesBegan:withEvent:方法囚灼,touches參數(shù)中裝著2個(gè)UITouch對(duì)象
    如果這兩根手指一前一后分開(kāi)觸摸同一個(gè)view骆膝,那么view會(huì)分別調(diào)用2次touchesBegan:withEvent:方法,
    并且每次調(diào)用時(shí)的touches參數(shù)中只包含一個(gè)UITouch對(duì)象

5.UIView拖拽思路?
    1.自定義UIView,實(shí)現(xiàn)監(jiān)聽(tīng)方法.
    2.確定在TouchMove方法當(dāng)中進(jìn)行操作,因?yàn)橛脩羰种冈谝晥D上移動(dòng)的時(shí)候才需要移動(dòng)視圖灶体。
    3.獲取當(dāng)前手指的位置和上一個(gè)手指的位置.
    4.當(dāng)前視圖的位置 = 上一次視圖的位置 + 手指的偏移量
    
    關(guān)健代碼實(shí)現(xiàn):
        拿到UITouch就能獲取當(dāng)前點(diǎn)
        UITouch *touch = [touches anyObject];
        獲取當(dāng)前點(diǎn)
        CGPoint curP = [touch locationInView:self];
        獲取上一個(gè)點(diǎn)
        CGPoint preP = [touch previousLocationInView:self];
        獲取手指x軸偏移量
        CGFloat offsetX = curP.x - preP.x;
        獲取手指y軸偏移量
        CGFloat offsetY = curP.y - preP.y;
        移動(dòng)當(dāng)前view
        self.transform = CGAffineTransformTranslate(self.transform, offsetX, offsetY);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末阅签,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蝎抽,更是在濱河造成了極大的恐慌愉择,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,348評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件织中,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡衷戈,警方通過(guò)查閱死者的電腦和手機(jī)狭吼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)殖妇,“玉大人刁笙,你說(shuō)我怎么就攤上這事∏ぃ” “怎么了疲吸?”我有些...
    開(kāi)封第一講書人閱讀 156,936評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)前鹅。 經(jīng)常有香客問(wèn)我摘悴,道長(zhǎng),這世上最難降的妖魔是什么舰绘? 我笑而不...
    開(kāi)封第一講書人閱讀 56,427評(píng)論 1 283
  • 正文 為了忘掉前任蹂喻,我火速辦了婚禮,結(jié)果婚禮上捂寿,老公的妹妹穿的比我還像新娘口四。我一直安慰自己,他們只是感情好秦陋,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布蔓彩。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赤嚼。 梳的紋絲不亂的頭發(fā)上旷赖,一...
    開(kāi)封第一講書人閱讀 49,785評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音探膊,去河邊找鬼杠愧。 笑死,一個(gè)胖子當(dāng)著我的面吹牛逞壁,可吹牛的內(nèi)容都是我干的流济。 我是一名探鬼主播,決...
    沈念sama閱讀 38,931評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼腌闯,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼绳瘟!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起姿骏,我...
    開(kāi)封第一講書人閱讀 37,696評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤糖声,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后分瘦,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體蘸泻,經(jīng)...
    沈念sama閱讀 44,141評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評(píng)論 2 327
  • 正文 我和宋清朗相戀三年嘲玫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了悦施。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,625評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡去团,死狀恐怖抡诞,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情土陪,我是刑警寧澤昼汗,帶...
    沈念sama閱讀 34,291評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站鬼雀,受9級(jí)特大地震影響顷窒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜取刃,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評(píng)論 3 312
  • 文/蒙蒙 一蹋肮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧璧疗,春花似錦坯辩、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春改抡,著一層夾襖步出監(jiān)牢的瞬間矢炼,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工阿纤, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留句灌,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓欠拾,卻偏偏與公主長(zhǎng)得像胰锌,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子藐窄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)资昧、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,059評(píng)論 4 62
  • 很久以前 母親為我 種下一棵芒果樹(shù) 她說(shuō) 讓樹(shù)與你同長(zhǎng)吧 看誰(shuí)最先成熟 我在長(zhǎng) 樹(shù)也長(zhǎng) 我變高 樹(shù)長(zhǎng)闊 如...
    唯一還是我閱讀 203評(píng)論 0 1
  • 你突然的出現(xiàn)我沒(méi)有防備 你是誰(shuí)的騎士欲做誰(shuí)護(hù)衛(wèi) 心里要相遇或者與誰(shuí)作對(duì) 全部放到一邊而選擇頹廢 想問(wèn)問(wèn)對(duì)不對(duì)悔不悔...
    青菜蘿卜豆腐湯閱讀 363評(píng)論 2 0
  • 假如我是一株草 我想永遠(yuǎn)守候那一寸貪瘠的土地 用薄弱的身軀抵擋風(fēng)雨 我想永遠(yuǎn)給這一寸土地陪襯 用一絲綠茵添補(bǔ)一角 ...
    ID夢(mèng)哥閱讀 326評(píng)論 0 1
  • 我時(shí)常幻想我會(huì)像超人一樣刹枉,出現(xiàn)在各種困難的情景中叽唱,人們無(wú)法解決的問(wèn)題,等我去搭救微宝。事實(shí)上尔觉,我在自我幻想中,一路勇往...
    隔壁村的教主閱讀 768評(píng)論 1 2