日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS手势操作简介(一)

發布時間:2023/12/13 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS手势操作简介(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

iOS中能夠響應手勢操作的類必須要繼承自UIResponder,才能夠處理手勢響應操作。
默認繼承了UIResponder的類有:UIApplication UIViewController UIView都繼承自UIResponder.
UIView是UIResponder的子類,可以實現下列4個方法處理不同的觸摸事件
**

一根或者多根手指開始觸摸view,系統會自動調用view的下面方法

**
- (void)touchesBegan:(NSSet )touches withEvent:(UIEvent )event

一根或者多根手指在view上移動,系統會自動調用view的下面方法(隨著手指的移動,會持續調用該方法)
- (void)touchesMoved:(NSSet )touches withEvent:(UIEvent )event

一根或者多根手指離開view,系統會自動調用view的下面方法
- (void)touchesEnded:(NSSet )touches withEvent:(UIEvent )event

觸摸結束前,某個系統事件(例如電話呼入)會打斷觸摸過程,系統會自動調用view的下面方法
(void)touchesCancelled:(NSSet )touches withEvent:(UIEvent )event
提示:touches中存放的都是UITouch對象

UITouch對象:

當用戶用一根手指觸摸屏幕時,會創建一個與手指相關聯的UITouch對象

一根手指對應一個UITouch對象

UITouch的作用
保存著跟手指相關的信息,比如觸摸的位置、時間、階段

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

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

提示:iPhone開發中,要避免使用雙擊事件!

UITouch的屬性

觸摸產生時所處的窗口
@property(nonatomic,readonly,retain) UIWindow *window;

觸摸產生時所處的視圖
@property(nonatomic,readonly,retain) UIView *view;

短時間內點按屏幕的次數,可以根據tapCount判斷單擊、雙擊或更多的點擊
@property(nonatomic,readonly) NSUInteger tapCount;

記錄了觸摸事件產生或變化時的時間,單位是秒
@property(nonatomic,readonly) NSTimeInterval timestamp;

當前觸摸事件所處的狀態
@property(nonatomic,readonly) UITouchPhase phase;

UITouch的方法:

(CGPoint)locationInView:(UIView *)view;
返回值表示觸摸在view上的位置
這里返回的位置是針對view的坐標系的(以view的左上角為原點(0, 0))
調用時傳入的view參數為nil的話,返回的是觸摸點在UIWindow的位置

  • (CGPoint)previousLocationInView:(UIView *)view;
    該方法記錄了前一個觸摸點的位置

UIEvent 每產生一個事件,就會產生一個UIEvent對象 UIEvent:稱為事件對象,記錄事件產生的時刻和類型

常見屬性
事件類型
@property(nonatomic,readonly) UIEventType type;
@property(nonatomic,readonly) UIEventSubtype subtype;

事件產生的時間
@property(nonatomic,readonly) NSTimeInterval timestamp;

UIEvent還提供了相應的方法可以獲得在某個view上面的觸摸對象(UITouch)

一次完整的觸摸過程,會經歷3個狀態:
觸摸開始:- (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

4個觸摸事件處理方法中,都有NSSet *touches和UIEvent *event兩個參數
一次完整的觸摸過程中,只會產生一個事件對象,4個觸摸方法都是同一個event參數

如果兩根手指同時觸摸一個view,那么view只會調用一次touchesBegan:withEvent:方法,touches參數中裝著2個UITouch對象

如果這兩根手指一前一后分開觸摸同一個view,那么view會分別調用2次touchesBegan:withEvent:方法,并且每次調用時的touches參數中只包含一個UITouch對象

根據touches中UITouch的個數可以判斷出是單點觸摸還是多點觸摸

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的iOS手势操作简介(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。