IOS手勢處理

2021-06-21 10:57:41 字數 1567 閱讀 7006

ios中觸控事件一般是多點觸控事件,加速計事件(翻譯不太好),遠端控制事件。在ios中大量的手勢識別蘋果都已經給我們處理好了他們都在uikit中,例如uicontrol的子類uibutton,uislider已經做好了手勢的識別。觸碰button能夠觸發事件,滑動slider觸發事件。在ios中的大部分控制項都已經為我們做好了手勢的識別,但是如果我們想要自己diy乙個控制項有需要手勢判斷怎麼辦呢?好接下來進入正題開始gesture recognizers之旅。

gesture recognizers 能夠正確的判斷出使用者的手勢如pinch(捏)、swipe(滑動)、旋轉等。gesture recognizers能夠將底層的事件處理**轉換到高層次的

動作中。

示例**:

#import "pmbviewcontroller.h"

@inte***ce pmbviewcontroller ()

@property (weak, nonatomic) iboutlet uilabel *label;

@end

@implementation pmbviewcontroller

- (void)viewdidload

- (void)handlegesture

- (void)didreceivememorywarning

@end

以下是gesture recognizer 識別的手勢

- (void)viewdidload

- (void)handlepangesture:(uigesturerecognizer *)sender

table 1-1  gesture recognizer classes of the uikit framework

gesture

uikit class

pinching in and out (for zooming a view)

panning or dragging

swiping (in any direction)

rotating (fingers moving in opposite directions)

long press (also known as 「touch and hold」)

由以上示例**可知gesture recognizer需要依附於乙個view,但view確可以有多個gesture recognizer,因為乙個view可能需要相應多個不同的手勢。

當gesture recognizer 識別出特定手勢後他會給target傳送action訊息,因此在建立recognizer的時候他需要target和action來進行初始化。

在ios中手勢分為離散型和連續型。乙個離散型手勢例如tap只發生一次;乙個連續的手勢例如pinch則在乙個時間段內連續發生。對於離散手勢,gesture recognizer只向他的target傳送乙個action訊息,而連續型的則會持續的向target傳送action訊息知道手勢結束。

在定義自己的手勢之前需要下來了解一下手勢識別的原理。

手勢識別的原理其實就是乙個狀態機,其原理圖如下所示:

IOS手勢處理

ios中觸控事件一般是多點觸控事件,加速計事件 翻譯不太好 遠端控制事件。在ios中大量的手勢識別蘋果都已經給我們處理好了他們都在uikit中,例如uicontrol的子類uibutton,uislider已經做好了手勢的識別。觸碰button能夠觸發事件,滑動slider觸發事件。在ios中的大部...

IOS 開發中手勢的處理

手勢識別 一 1.點按 uitapgesturerecognizer 2.長按 uilongpressgesturerecognizer if uigesturerecognizerstatebegan recongnizer.state else if uigesturerecognizersta...

iOS 手勢識別

首先給大家解釋一下為什麼要學習手勢識別?如果想監聽乙個uiview上面的觸控事件,之前的做法是 自定義乙個uiview 實現uiview的touches方法,在方法裡面實現具體功能 透過touches監聽uiview的觸控事件,有很明顯的幾個缺點 1.必須要自定義uiview,2.由於是在view內...