iOS學(xué)習(xí)筆記(5):UITouch&UIEvent

  • 當(dāng)用戶觸摸屏幕時(shí), 會(huì)創(chuàng)建一個(gè)與手指相關(guān)關(guān)聯(lián)的UITouch對(duì)象
  • 一個(gè)手指對(duì)應(yīng)一個(gè)UITouch對(duì)象

UITouch作用

  • 保存著跟手指相關(guān)的信息,比如觸摸的位置、時(shí)間、階段
  • 當(dāng)手指移動(dòng)時(shí),系統(tǒng)會(huì)更新統(tǒng)一個(gè)UITouch對(duì)象,使之能夠一直保存該手指在的觸摸位置
  • 當(dāng)手指離開屏幕時(shí),系統(tǒng)會(huì)銷毀相應(yīng)的UITouch對(duì)象

UITouch的屬性

// 觸摸產(chǎn)生時(shí)所處的窗口
@property(nonatmoic, readonly, retain) UIWindow *window;
// 觸摸產(chǎn)生時(shí)所處的視圖
@property(nonatmoic, readonly, retain) UIView *view;
// 短時(shí)間內(nèi)點(diǎn)按屏幕的次數(shù), 可以根據(jù)tapCount判斷單擊、雙擊或更多的點(diǎn)擊
@property(nonatmoic, readonly) NSUInteger tapCount;
// 記錄了觸摸事件產(chǎn)生或變化時(shí)的時(shí)間,單位是秒
@property(nonatomic, readonly) NSTimeInterval timestamp;
// 當(dāng)前觸摸事件所處的狀態(tài)
@property(nonatomic, readonly) UITouchPhase phase;

UITouch的方法

// 返回值表示觸摸在view上的位置
// 這里返回的位置是針對(duì)view的坐標(biāo)系的(以view的左上角為原點(diǎn)(0,0))
// 調(diào)用時(shí)傳入的view參數(shù)為nil的話,返回的是觸摸點(diǎn)在UIWindow的位置
- (CGPoint)locationInView:(UIView *)view;
// 該方法記錄了前一個(gè)觸摸點(diǎn)的位置
- (CGPoint)previousLocationInView:(UIView *)view;

view的拖拽

 // 讓當(dāng)前控件隨著手指移動(dòng)而移動(dòng)
 // 獲取UITouch
 UITouch *touch = [touches anyObject];
 // 獲取當(dāng)前點(diǎn)
 CGPoint curP = [touch locationInView:self];
 // 獲取上一個(gè)點(diǎn)
 CGPoint preP = [touch previousLocationInView:self];
 // 計(jì)算手指x軸偏移量
 CGFloat offsetX = curP.x - preP.x;
 // 計(jì)算手指x軸偏移量
 CGFloat offsetY = curP.y - preP.y;
 // 修改控件的形變
 self.transform = CGAffineTransformTranslate(self.transform, offsetX, offsetY);

UIEvent

  • 稱為事件對(duì)象,記錄事件產(chǎn)生的時(shí)刻和類型

常見屬性

// 事件類型
@property(nonatomic, readonly) UIEventType type;
@property(nonatomic, readonly) UIEventSubtype subtype;
// 事件產(chǎn)生的時(shí)間
@property(nonatomic, readonly) NSTimeInterval timestamp;
最后編輯于
?著作權(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)容

  • 本文來自:http://ios.jobbole.com/84081/ 前言: 按照時(shí)間順序,事件的生命周期是這樣的...
    HackerOnce閱讀 2,947評(píng)論 1 10
  • 在iOS開發(fā)中經(jīng)常會(huì)涉及到觸摸事件。本想自己總結(jié)一下,但是遇到了這篇文章,感覺總結(jié)的已經(jīng)很到位,特此轉(zhuǎn)載。作者:L...
    WQ_UESTC閱讀 6,249評(píng)論 4 26
  • 好奇觸摸事件是如何從屏幕轉(zhuǎn)移到APP內(nèi)的?困惑于Cell怎么突然不能點(diǎn)擊了?糾結(jié)于如何實(shí)現(xiàn)這個(gè)奇葩響應(yīng)需求?亦或是...
    Lotheve閱讀 59,561評(píng)論 51 604
  • 觸摸事件iOS中的事件:在用戶使用app過程中,會(huì)產(chǎn)生各種各樣的事件。iOS中的事件可以分為3大類型 view的觸...
    念念不忘一個(gè)丫頭的容閱讀 322評(píng)論 0 0
  • 昨晚我哭的很傷心,不是和男友吵架,也不是工作上的事,而是一肚子積累的委屈和無奈以及渺茫。我看到男友11點(diǎn)多了還在一...
    孤獨(dú)不離閱讀 287評(píng)論 3 0

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