追_沐 iOS UITouch觸摸與UIGesture手勢(shì).01.事件、觸摸(touch)事件

一、iOS事件:
  1.事件:事件就是當(dāng)你在手機(jī)上點(diǎn)擊手機(jī)屏幕、滑動(dòng)手機(jī)翻面、搖動(dòng)手機(jī)的時(shí)候,手機(jī)做出一些反應(yīng),對(duì)應(yīng)的在應(yīng)用程序里實(shí)現(xiàn)了某些代碼的某些功能,完成這個(gè)過程就是一個(gè)事件。
  2.iOS事件類型:
 ?。?)觸摸事件,比如點(diǎn)擊照片放大、點(diǎn)擊按鈕等。
  (2)運(yùn)動(dòng)事件,比如微信搖一搖,就是一個(gè)很典型的運(yùn)動(dòng)事件,通過手機(jī)的運(yùn)動(dòng),實(shí)現(xiàn)某些功能。
 ?。?)遠(yuǎn)程控制事件,這個(gè)我也不知道舉什么例子。
  


  


二、觸摸事件
  1.觸摸事件的處理方法:
  復(fù)寫以下方法,監(jiān)聽觸摸事件。
  **

**
  2.UITouch觸摸對(duì)象
 ?。?)先來看觸摸事件會(huì)包含哪些信息:window:觸摸產(chǎn)生所在的窗口、view:觸摸產(chǎn)生所處的視圖、tapCount觸摸是單擊還是雙擊或者更多、phase觸摸事件在屏幕上有一個(gè)周期,即觸摸開始、觸摸點(diǎn)移動(dòng)、觸摸結(jié)束、還有中途取消。通過phase可以查看當(dāng)前觸摸時(shí)間在一個(gè)周期中所處的狀態(tài)。phase是UITouchPhase類型的,它是一個(gè)枚舉:
  · UITouchPhaseBegan
  · UITouchPhaseMoved
  · UITouchPhaseStationary
  · UITouchPhaseEnded
  
  window、view、tapCount、phase都是UITouch類中常用屬性,也就是說建立一個(gè)UITouch對(duì)象就可以用這些屬性來看觸摸事件包含的信息。
  
 ?。?)

 ?。?)實(shí)例代碼:新建一個(gè)工程,在ViewController中寫如下方法
  -(void)touchesBegan:(NSSet )touches withEvent:(UIEvent )event{
      //UITouch類中有已經(jīng)建立了很多UITouch對(duì)象,只需要從中取出來即可,不用重復(fù)創(chuàng)建,所以此處不用alloc,用一個(gè)UITouch的對(duì)象touch接收就行了。anyObject是從類里面任意取出來一個(gè)。
      UITouch * touch=[UITouch anyObject];取出一個(gè)觸摸點(diǎn)。
      NSLog(@"%@",touch.window)//打印下touch的window屬性。
      NSLog(@"%@", touch.view);//打印下當(dāng)前觸摸的view。
      NSLog(@"tapCount:%ld", touch.tapCount);//打印點(diǎn)擊次數(shù)。
      NSLog(@"phase: %ld", touch.phase);//當(dāng)前狀態(tài)。
      //下面寫一個(gè)switch,根據(jù)點(diǎn)擊次數(shù),實(shí)現(xiàn)不同的功能,具體代碼就不實(shí)現(xiàn)了。
      switch (touch.tapCount) {
**     case 1:

         
        break;
**       case 2:**


**     break;**
**      case 3:**


**     default:**
**     break;**
      }
  }

**  (4)UITouch類中常用方法 **
  既然是類中的常用方法,那么,是實(shí)例方法的話,我們創(chuàng)建一個(gè)UITouch對(duì)象就可以調(diào)用,是類方法的話,我們直接用類名,即[UITouch ];可以調(diào)用。
  


  例如在(3)中我們可以用取出來的對(duì)象調(diào)用這兩個(gè)方法。
  CGPoint point =[touch locationInView:touch.view];//調(diào)用這個(gè)方法可以獲得點(diǎn)擊時(shí)候的位置,用一個(gè)CGPoint類型的變量接收就可以得到一個(gè)點(diǎn)。
  至于如何打印出這個(gè)點(diǎn),我也不知道,如果你知道還望告知,謝謝。
 ?。?)touch事件的傳遞
  

  那么上圖中的UIGestureRecognizer又是什么呢?還有什么是第一響應(yīng)者?下篇博客有詳細(xì)說明。
  摘自文檔:
  


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容