亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

【學習筆記】響應者鏈條

2019-11-14 19:52:53
字體:
來源:轉載
供稿:網友

  自學iOS有一兩個月了,一直沒有好好整理學習筆記,打算今天開始慢慢補上,就當是復習和補缺補漏吧。

 

  iOS的事件大致分為三種:觸摸事件、加速計事件、遠程控制事件

  首先要理解以下幾個概念:

  一、響應者對象:

    iOS中不是任何對象都能處理事件,只有繼承了UIResponder的對象才能接收并處理事件。我們稱之為響應者對象”。

    UIapplication、UIViewController、UIView都繼承自UIResponder,因此它們都是響應者對象,都能夠接收并處理事件。

  二、UIResponder處理事件的主要方法

    觸摸事件    

- (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;

    加速計事件

- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event;- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event;- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event;

    遠程控制事件

- (void)remoteControlReceivedWithEvent:(UIEvent *)event;

  三、UITouch

    用戶同時觸摸的手指,每一根就代表一個UITouch對象,它保存著跟手指相關的信息,比如觸摸的位置、時間、階段。

    當手指移動(move)時,系統會更新同一個UITouch對象,使之能夠一直保存該手指在的觸摸位置。

    當手指離開(end)屏幕時,系統會銷毀相應的UITouch對象.

 

  四、UIEvent

    觸摸事件發生,必須會產生一個UIEvent對象,稱為事件對象,記錄事件產生的時刻類型。

 

  五、首先處理事件的響應者

    發生觸摸事件后,系統會將該事件加入到一個由UIApplication管理的事件隊列中。

    UIApplication會從事件隊列中取出最前面的事件,并將事件分發下去以便處理,通常,先發送事件給應用程序的主窗口(keyWindow

    主窗口會在視圖層次結構中找到一個最合適的視圖來處理觸摸事件,這也是整個事件處理過程的第一步

    找到合適的視圖控件后,就會調用視圖控件的touches方法來作具體的事件處理

    touchesBegan…

    touchesMoved…

    touchedEnded…

    

    下面是老師上課的PPT示例,說的很明白。

  

  UIView不接收觸摸事件的三種情況

  1.alpha= 0.0 ~ 0.01

  2.hidden屬性=YES

  3.userInteractionEnabled=YES

  注意:UIImageViewuserInteractionEnabled默認就是NO,因此UIImageView以及它的子控件默認是不能接收觸摸事件的

 

  六、響應者鏈條

    合適的控件調用touches方法后,會默認地將事件順著響應者鏈條向上傳遞,將事件交給上一個響應者進行處理。

  尋找上一個響應者的過程,看起來是尋找首要合適控件的逆過程。

  當前響應者的touches方法中如果調用[super touches],就會對用上一個響應者touches方法,同時可以將UITouch對象和UIEvent對象向上傳遞。

  這樣就能夠將一次觸摸事件的事件對象和觸摸對象的信息傳遞給多個響應者。

 

  問題:上一個響應者(nextResponder)是誰?

  判斷步驟:
  1>如果當前的view是控制器的view,控制器就是上一個響應者
  2>如果當前的view不是控制器的view,那么父控件就是上一個響應者
  3>如果當前響應者是控制器,那么上一個響應者是UIWindow;如果UIWindow也不處理,就再往上傳給UIApplication
  4>如果UIApplication也不處理,那么這條消息就被會廢棄

  

  七、觸摸事件處理過程

  1.用戶觸摸后,系統先將事件對象(event)由上往下傳遞(父控件傳給子控件),找到最合適的控件來處理事件(遞歸查找當前控件的最適合子控件)

  2.調用合適控件的touches相關方法

  3.如果調用了super的touches相關方法,就會將事件順著響應者鏈條往上傳遞,傳給上一個響應者

  4.接著就會調用上一個響應者的touches方法

  5.只要當前響應者的touches方法中調用了super的touches方法,還會繼續往上遞歸調用,直到不再調用super的touches方法

 

  八、補充面試題:什么是響應者鏈條?

  以下幾個點是李明杰老師給的參考回答,可學習借鑒:

  1>響應者鏈條是由多個響應者對象連接起來的鏈條

  2>響應者對象是指能夠處理事件的對象,即繼承UIResponder的對象

  3>利用響應者鏈條,能讓多個控件處理同一個觸摸事件

  4>簡要敘述響應者鏈條的往上傳遞,找到上一個響應者(nextResponder)

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品视频久久久| www.日韩视频| 久久精品国产免费观看| 91免费精品国偷自产在线| 成人欧美一区二区三区黑人孕妇| 91色在线视频| 亚洲国产高清自拍| 久久亚洲影音av资源网| 亚洲日韩第一页| 亚洲精品一区久久久久久| 日韩精品www| 国产精品视频网址| 久久久久久国产精品三级玉女聊斋| 色偷偷av亚洲男人的天堂| 国产精品日日做人人爱| 久久精品国产91精品亚洲| 97久久精品国产| 国产在线视频2019最新视频| 欧美成人h版在线观看| 日韩精品在线视频美女| 日韩欧美成人区| 韩国三级日本三级少妇99| 欧美色欧美亚洲高清在线视频| 深夜福利91大全| 久久精品欧美视频| 国产日韩欧美综合| 欧美精品激情在线| 久久99精品久久久久久青青91| 国产免费亚洲高清| 岛国视频午夜一区免费在线观看| 91日本在线视频| 欧美激情在线视频二区| 日韩精品小视频| 精品亚洲男同gayvideo网站| 韩国福利视频一区| 日韩av观看网址| 色yeye香蕉凹凸一区二区av| 亚洲国产精品va在线观看黑人| 亚洲丝袜在线视频| 一本色道久久88综合日韩精品| 久久av红桃一区二区小说| 91欧美精品成人综合在线观看| 国产午夜精品麻豆| 色哟哟网站入口亚洲精品| 国产精品丝袜视频| 日韩精品中文字幕在线观看| 中文字幕亚洲专区| 日韩精品在线影院| 92福利视频午夜1000合集在线观看| 日本中文字幕不卡免费| 成人精品视频久久久久| 久久综合伊人77777蜜臀| 精品中文视频在线| 欧美成人精品在线视频| 亚洲综合第一页| 蜜月aⅴ免费一区二区三区| 久久精品中文字幕一区| 国产精自产拍久久久久久| 亚洲精品久久久久久久久| 精品国产福利在线| 91av在线影院| 国产午夜精品一区理论片飘花| 久久亚洲一区二区三区四区五区高| 国产视频精品va久久久久久| 国产一区二区久久精品| 色综合亚洲精品激情狠狠| 国产亚洲精品成人av久久ww| 亚洲欧美在线免费观看| 中文字幕精品在线| 日韩av电影在线网| 亚洲精品第一国产综合精品| 欧美最猛性xxxxx亚洲精品| 国产精品69久久| 精品亚洲va在线va天堂资源站| 91久热免费在线视频| 91精品免费久久久久久久久| zzjj国产精品一区二区| 热re99久久精品国产66热| 欧美日韩亚洲国产一区| 国产精品久久久久久中文字| 亚洲国产精品成人va在线观看| 欧美成人黄色小视频| 狠狠综合久久av一区二区小说| 日韩毛片中文字幕| 午夜精品福利在线观看| 九九九久久久久久| 黄网站色欧美视频| 成人国产精品日本在线| 青青草国产精品一区二区| 国产精品久久久久久久久粉嫩av| 亚洲91精品在线观看| 日韩中文字幕不卡视频| 萌白酱国产一区二区| 欧美激情二区三区| 亚洲欧美综合另类中字| 亚洲成avwww人| 久久久91精品国产| 欧美大尺度激情区在线播放| 国产极品精品在线观看| 亚洲精品久久久久久久久久久久久| 精品久久在线播放| 中文字幕久久亚洲| 久久精品中文字幕免费mv| 日韩在线精品视频| 91久久综合亚洲鲁鲁五月天| 欧美裸体xxxx极品少妇软件| 亚洲片在线资源| 亚洲xxx视频| 欧美日韩在线视频观看| 亚洲精品短视频| 国产成人一区二区三区| 亚洲天堂男人的天堂| 成人网址在线观看| 欧美性猛交xxxx黑人| 国产精品video| 国模视频一区二区| 欧美一级大片视频| 黑人精品xxx一区| 亚洲成人久久电影| 国产a级全部精品| 色婷婷**av毛片一区| 日本精品中文字幕| 91情侣偷在线精品国产| 国产日韩av在线| 亚洲成人精品视频在线观看| 久久久久99精品久久久久| 国产精品av免费在线观看| 九九九热精品免费视频观看网站| 亚洲国产精品中文| 亚洲国产精品久久久久秋霞蜜臀| 欧美精品18videos性欧美| 日韩欧美亚洲国产一区| 性欧美视频videos6一9| 久久国产精品久久久| 九九精品视频在线观看| 国产精品男女猛烈高潮激情| 午夜精品一区二区三区在线| 亚洲欧美www| 国产精品吊钟奶在线| 另类色图亚洲色图| 欧美精品video| 午夜欧美不卡精品aaaaa| 国产精品免费视频久久久| 中文字幕亚洲欧美| 久久精品这里热有精品| 欧美大成色www永久网站婷| 久久精品视频免费播放| 国产国产精品人在线视| 欧美色视频日本版| 欧美洲成人男女午夜视频| 中文字幕亚洲欧美一区二区三区| 亚洲精品第一页| 亚洲va国产va天堂va久久| 久久久精品美女| 亚洲a∨日韩av高清在线观看| 国产日本欧美一区| 亚洲精品99久久久久中文字幕| 国产精品夜间视频香蕉| 欧美高清无遮挡| 亚洲成人精品av| 欧美电影第一页| 不卡av电影院| 色综合色综合久久综合频道88| 久久99国产精品久久久久久久久|