ios中觸控事件一般是多點觸控事件,加速計事件(翻譯不太好),遠端控制事件。在ios中大量的手勢識別蘋果都已經給我們處理好了他們都在uikit中,例如uicontrol的子類uibutton,uislider已經做好了手勢的識別。觸碰button能夠觸發事件,滑動slider觸發事件。在ios中的大部分控制項都已經為我們做好了手勢的識別,但是如果我們想要自己diy乙個控制項有需要手勢判斷怎麼辦呢?好接下來進入正題開始gesture recognizers之旅。
gesture recognizers 能夠正確的判斷出使用者的手勢如pinch(捏)、swipe(滑動)、旋轉等。gesture recognizers能夠將底層的事件處理**轉換到高層次的
動作中。
示例**:
[objc]view plain
copy
?#import "pmbviewcontroller.h"
@inte***ce pmbviewcontroller ()
@property (weak, nonatomic) iboutlet uilabel *label;
@end
@implementation pmbviewcontroller
- (void)viewdidload
- (void)handlegesture
- (void)didreceivememorywarning
@end
以下是gesture recognizer 識別的手勢
[objc]view plain
copy
?- (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內...