1.單擊雙擊共存的**
uitapgesturerecognizer *singletap = [[uitapgesturerecognizer alloc] initwithtarget:self action:@selector(singletap)];
//雙擊
uitapgesturerecognizer *doubletap = [[uitapgesturerecognizer alloc] initwithtarget:self action:@selector(doubletap)];
[doubletap setnumberoftapsrequired:2];
[self.view addgesturerecognizer:singletap];
[self.view addgesturerecognizer:doubletap];
[singletap requiregesturerecognizertofail:doubletap];
2.滑動相關手勢
uiswipegesturerecognizer * swipeges = [[uiswipegesturerecognizer alloc] initwithtarget:self action:@selector(recog)];
[swipeges setdirection:uiswipegesturerecognizerdirectionup];
[self.view addgesturerecognizer:swipeges];
uiswipegesturerecognizer通常用作滑動,優點是**簡單,系統自動判斷滑動方向。缺點是不能持續觸發,有時不方便使用。
通常,有時也用uipangesturerecognizer實現滑動手勢,好處是能隨著手指在螢幕上移動而持續觸發滑動的相關事件,在事件中持續獲得滑動的相應引數,可以實現連續控制。由於比較複雜,放在最後的demo 中
3.其他手勢
其他手勢不在一一總結,簡述如下:
uipinchgesturerecognizer(捏合)
uirotationgesturerecognizer(旋轉)
uilongpressgesturerecognizer(長按)
長按很簡單,捏合和旋轉暫時沒有用過,最後補充一段簡單的**。
ps1:
controlview中如下:
①三個全域性變數的手勢,其中,_pan處理所有的滑動,待會仔細介紹。另外倆分別處理單擊,雙擊。還有三個變數是控制觸發頻率的全域性變數,稍後介紹。
cgpoint _begintouchpoint;
slidedirect _direct;
nsinteger _currentdegree;
uipangesturerecognizer * _panges;
uitapgesturerecognizer * _singletapges;
uitapgesturerecognizer * _doubletapges;
②初始化這三個手勢並新增到檢視中。單擊雙擊比較簡單,主要是滑動模組,需要自己判斷滑動方向,距離大小
- (void)initgesture
觸發的時間
- (void)handlepan:(uipangesturerecognizer *)sender
case uigesturerecognizerstatechanged:
else if (degree < 0.6)
}if (_direct == slidedirectnone)
//已判斷出當前方向,則進行方法的呼叫
switch (_direct) else
}break;
case slidedirectdown:
else
}break;
case slidedirectleft:
break;
case slidedirectright:
break;
default:
break;}}
break;
case uigesturerecognizerstateended:
_direct = slidedirectnone;
_currentdegree = 1;
}break;
default:
break;}}
- (void)gestureslideges:(gestype)ges degre:(cgfloat )degre
_currentdegree ++;
if ([self.basedelegate respondstoselector:@selector(recogges:degree:)])
}ps2:
手勢的狀態,
typedef ns_enum(nsinteger, uigesturerecognizerstate) ;
IOS手勢處理
ios中觸控事件一般是多點觸控事件,加速計事件 翻譯不太好 遠端控制事件。在ios中大量的手勢識別蘋果都已經給我們處理好了他們都在uikit中,例如uicontrol的子類uibutton,uislider已經做好了手勢的識別。觸碰button能夠觸發事件,滑動slider觸發事件。在ios中的大部...
IOS手勢處理
ios中觸控事件一般是多點觸控事件,加速計事件 翻譯不太好 遠端控制事件。在ios中大量的手勢識別蘋果都已經給我們處理好了他們都在uikit中,例如uicontrol的子類uibutton,uislider已經做好了手勢的識別。觸碰button能夠觸發事件,滑動slider觸發事件。在ios中的大部...
iOS 手勢識別
首先給大家解釋一下為什麼要學習手勢識別?如果想監聽乙個uiview上面的觸控事件,之前的做法是 自定義乙個uiview 實現uiview的touches方法,在方法裡面實現具體功能 透過touches監聽uiview的觸控事件,有很明顯的幾個缺點 1.必須要自定義uiview,2.由於是在view內...