ios - Swift TableView 与 UIPanGestureRecognizer 冲突
问题描述
我检查了所有解决方案,但没有找到适合我的案例。我有带有单元格的tableView。某些单元格还具有带有标题部分和单元格的TableView 。我曾经将 UIPanGestureRecognizer 添加到 headerSerction 以添加幻灯片视图(删除单元格/等)。由于某些原因,我无法再添加一行来实现基本方法。现在的问题是,当我滚动主 TableView 时,优先级设置为在单元格内滑动水平视图(内部 tableView 部分包含 UIPanGestureRecognizer)。我该如何解决?
标题部分包含:
func setupGesture(){
let gesture = UIPanGestureRecognizer(target: self, action: #selector(wasDragged(_:)))
gesture.cancelsTouchesInView = false
contentsView.addGestureRecognizer(gesture)
contentsView.isUserInteractionEnabled = true
gesture.delegate = self
}
另外,拖动动作:
@objc
func wasDragged(_ gestureRecognizer: UIPanGestureRecognizer) {
if gestureRecognizer.state == UIGestureRecognizerState.began || gestureRecognizer.state == UIGestureRecognizerState.changed {
let translation = gestureRecognizer.translation(in: self.contentsView)
print(gestureRecognizer.view!.frame.minX)
if(gestureRecognizer.view!.frame.minX < 80) || (gestureRecognizer.view!.frame.minX > -160){
gestureRecognizer.view!.center = CGPoint(x: gestureRecognizer.view!.center.x + translation.x, y: gestureRecognizer.view!.center.y)
}else {
gestureRecognizer.view!.center = CGPoint(x: 160, y: 0)
}
gestureRecognizer.setTranslation(CGPoint(x: 0, y: 0), in: self.contentsView)
}else{
if(gestureRecognizer.view!.frame.minX <= 40) && (gestureRecognizer.view!.frame.minX >= 0){
UIView.animate(withDuration: 0.3, delay: 0.0, options: [.allowUserInteraction], animations: {
gestureRecognizer.view!.center = CGPoint(x: (self.contentsView.frame.width / 2), y: gestureRecognizer.view!.center.y)
})
}else if(gestureRecognizer.view!.frame.minX >= 40) && (gestureRecognizer.view!.frame.minX >= 0){
UIView.animate(withDuration: 0.3, delay: 0.0, options: [.allowUserInteraction], animations: {
gestureRecognizer.view!.center = CGPoint(x: (self.contentsView.frame.width / 2) + 80, y: gestureRecognizer.view!.center.y)
})
}else if(gestureRecognizer.view!.frame.minX >= -40) && (gestureRecognizer.view!.frame.minX <= 0){
UIView.animate(withDuration: 0.3, delay: 0.0, options: [.allowUserInteraction], animations: {
gestureRecognizer.view!.center = CGPoint(x: (self.contentsView.frame.width / 2), y: gestureRecognizer.view!.center.y)
})
}else if(gestureRecognizer.view!.frame.minX <= -40) && (gestureRecognizer.view!.frame.minX >= -80){
UIView.animate(withDuration: 0.3, delay: 0.0, options: [.allowUserInteraction], animations: {
gestureRecognizer.view!.center = CGPoint(x: (self.contentsView.frame.width / 2) - 80, y: gestureRecognizer.view!.center.y)
})
}else if(gestureRecognizer.view!.frame.minX <= -80) && (gestureRecognizer.view!.frame.minX >= -120){
UIView.animate(withDuration: 0.3, delay: 0.0, options: [.allowUserInteraction], animations: {
gestureRecognizer.view!.center = CGPoint(x: (self.contentsView.frame.width / 2) - 80, y: gestureRecognizer.view!.center.y)
})
}else if(gestureRecognizer.view!.frame.minX <= -120) && (gestureRecognizer.view!.frame.minX <= 0){
UIView.animate(withDuration: 0.3, delay: 0.0, options: [.allowUserInteraction], animations: {
gestureRecognizer.view!.center = CGPoint(x: (self.contentsView.frame.width / 2) - 160, y: gestureRecognizer.view!.center.y)
})
}
}
}
解决方案
推荐阅读
- r - 在 Kaggle 中加载 Rmd 格式的代码时发出
- scala - 如何在 Scala 中使用函数 for 循环
- augmented-reality - 如何测量ARCore中特定点之间的距离,这些点是在图像分类后获得的?
- sql - 基于group by的SQL字符串聚合
- javascript - JavaScript 中的 DOM 查询,它可以定位某个元素,其先前的兄弟值是给定值
- swift - 在 TableViewCell 中使用 userDefaults 数组保存多个对象 - Swift 5
- wso2 - 如何在没有租户的情况下使用 WSO2 身份服务器?
- python - 对数据帧的列进行按位运算
- java - 为什么Java中的除法只显示0?
- python - 如何在 Python 中使用递归返回组合