第一步給你的cell添加UIPanGestureRecognizer手勢(shì),并設(shè)置UIGestureRecognizerDelegate代理
UIPanGestureRecognizer *pan =[[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(doPan:)];
pan.delegate = self;
[self addGestureRecognizer:pan];
隨后在@implementation中添加下面代碼即可
-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
? ? // note: we might be called from an internal UITableViewCell long press gesture
? ? if([gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]){
? ? ? ? UIPanGestureRecognizer *panGestureRecognizer =(UIPanGestureRecognizer*)gestureRecognizer;
? ? ? ? UIView *cell =[panGestureRecognizer view];
? ? ? ? CGPoint translation =[panGestureRecognizer translationInView:[cell superview]];
? ? ? ? // Check for horizontal gesture
? ? ? ? if(fabs(translation.x)> fabs(translation.y))
? ? ? ? {
? ? ? ? ? ? return YES;
? ? ? ? }
? ? }
? ? return NO;
}
附上swift的代碼
override func awakeFromNib(){
? ? super.awakeFromNib()
? ? // do not use,say,layoutSubviews as layoutSubviews is called often
? ? let p = UIPanGestureRecognizer(target: self,action: #selector(yourPan))
? ? p.delegate = self
? ? contentView.addGestureRecognizer(p)
? ? }
}
override func gestureRecognizerShouldBegin(_ g: UIGestureRecognizer)-> Bool {
? ? if(g.isKind(of: UIPanGestureRecognizer.self)){
? ? ? ? let t =(g as! UIPanGestureRecognizer).translation(in: contentView)
? ? ? ? let verticalness = abs(t.y)
? ? ? ? if(verticalness > 0){
? ? ? ? ? ? print("ignore vertical motion in the pan ...")
? ? ? ? ? ? print("the event engine will >pass on the gesture< to the scroll view")
? ? ? ? ? ? return false
? ? ? ? }
? ? }
? ? return true
}