一. 手勢類經常使用的代理方法,解決手勢和點擊cell的衝突

手勢是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; 
}
相關文章
相關標籤/搜索