檢測手勢有兩種方法,一種是定製子視圖,重寫視圖從UIResponder類中繼承來的事件處理方法,touchesBegan:withEvent:等一系列方法來檢測手勢;另一個方法是使用手勢識別器,即UIGestureRecognize的各種具體子類。
//在cell上添加 bgView,給bgView添加兩個手勢檢測方法
bgView.userInteractionEnabled = YES;
UITapGestureRecognizer *singleTapGesture = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleSingleTap:)];
singleTapGesture.numberOfTapsRequired =1;
singleTapGesture.numberOfTouchesRequired =1;
[bgView addGestureRecognizer:singleTapGesture];
UITapGestureRecognizer *doubleTapGesture = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleDoubleTap:)];
doubleTapGesture.numberOfTapsRequired =2;
doubleTapGesture.numberOfTouchesRequired =1;
[bgView addGestureRecognizer:doubleTapGesture];
//只有當doubleTapGesture識別失敗的時候(即識別出這不是雙擊操作),singleTapGesture才能開始識別
[singleTapGesture requireGestureRecognizerToFail:doubleTapGesture];
//兩個手勢分別響應的方法
-(void)handleSingleTap:(UIGestureRecognizer *)sender{
//chooseNum爲手勢響應的view的tag值
chooseNum=(int)sender.view.tag;
CGPoint touchPoint = [sender locationInView:self];
}
-(void)handleDoubleTap:(UIGestureRecognizer *)sender{
//chooseNum爲手勢響應的cell的tag值
chooseNum=(int)sender.view.tag;
UITableViewCell *v = (UITableViewCell *)[[sender view] superview];
chooseNum=v.tag;
}