iOS控件与手势冲突

前言

在页面上加载了手势操作后,再去调用控件的方法,有时候会导致控件的某项方法失效,举个例子:在加载 tap(UITapGestureRecognizer)手势之后,UISlidertouchUpInside方法就不这么灵敏了。

解决

解决的方法其实很简单,在给手势绑定代理UIGestureRecognizerDelegate,并在代理的方法中判断就可以了。代理方法如下:

gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch

OC 使用方式如下:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    if ([touch.view isKindOfClass:[UISlider class]]) {
        return NO;
    }
    return YES;
}

Swift 使用方式如下:

func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
        if (touch.view?.isKind(of: UISlider.self))! {
            return false
        }else {
            return true
        }
    }

你可能感兴趣的:(iOS控件与手势冲突)