前言
在页面上加载了手势操作后,再去调用控件的方法,有时候会导致控件的某项方法失效,举个例子:在加载 tap(UITapGestureRecognizer)手势之后,UISlider的touchUpInside方法就不这么灵敏了。
解决
解决的方法其实很简单,在给手势绑定代理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
}
}
网友评论