手勢是OC中的類,那麼手勢類也是有協議的,UIGestureRecognizerDelegate,手勢經常使用的代理方法:ui
1.是否容許同時支持多個手勢,默認只支持一個手勢,要調用此方法注意設置代理 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { return YES; } 2.是否容許開始觸發手勢 - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer { return NO; } 3.是否容許接收手機的觸摸(能夠控制觸摸的範圍) - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { //獲取當前的觸摸點 CGPoint currentP = [touch locationInView:self.imageView]; 在圖片的左半區域能夠接受觸摸 if (currentP.x < self.imageView.bounds.size.width * 0.5) { return YES; }else { return NO; } }
例如:- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
// 輸出點擊的view的類名 //NSLog(@"%@", NSStringFromClass([touch.view class]));
// 若爲UITableViewCellContentView(即點擊了tableViewCell),則不截獲Touch事件
if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"])
{ return NO; }
return YES;
}