TableView 上有 UITableViewCell,
如果 UITableViewCell 的 contentView 上面有 UISlider,
控件 UISlide 会与 UITableVIew 自带的滚屏手势冲突。
UITableVIew 继承自 UIScrollView , UIScrollView 自带三个手势
// 滚动
open var panGestureRecognizer: UIPanGestureRecognizer { get }
// 缩放
open var pinchGestureRecognizer: UIPinchGestureRecognizer? { get }
open var directionalPressGestureRecognizer: UIGestureRecognizer { get }
一般,UISlider 的拖动手势,会与 UITableVIew 的 panGestureRecognizer 冲突。
表现就是,Cell 上的 UISlider 滑块不太好拉动。拉滑块,相对容易带着 UITableView 上下晃动。
解决:
使用了表视图的继承,在子类中处理了手势代理
class CustomTB: UITableView {}
extension CustomTB: UIGestureRecognizerDelegate{
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
if touch.view is UISlider{
return false
}
else{
return true
}
}
}