Ios 检测UIScreenedGegestureRecognitor和失败的UIPangestureRecognitor
在我的ViewController中,我有一个用于切换视图的Ios 检测UIScreenedGegestureRecognitor和失败的UIPangestureRecognitor,ios,uitableview,swift,uigesturerecognizer,Ios,Uitableview,Swift,Uigesturerecognizer,在我的ViewController中,我有一个用于切换视图的UIScreenedGegestureRecognitor,还有一个带有自定义UITableViewCell的UITableView。在这个定制的UITableViewCell是一个用于扫描单元格的uipangestruerecognizer 我添加了手势识别器:应与手势识别器同时识别:,这样两种手势都能工作,手势识别器应开始,以防止垂直滚动的冲突 问题是,我如何赋予UIScreenedGegestureRecognitor优先级?当我
UIScreenedGegestureRecognitor
,还有一个带有自定义UITableViewCell
的UITableView
。在这个定制的UITableViewCell
是一个用于扫描单元格的uipangestruerecognizer
我添加了手势识别器:应与手势识别器同时识别:
,这样两种手势都能工作,手势识别器应开始
,以防止垂直滚动的冲突
问题是,我如何赋予UIScreenedGegestureRecognitor
优先级?当我在屏幕边缘滑动时,我希望在不平移单元格的情况下切换视图。我想我应该使用委托方法,但到目前为止,我读得越多,就越感到困惑
自定义UITableViewCell中的代码
:
override func viewDidload() {
var recognizer = UIPanGestureRecognizer(target: self, action: "handlePan:")
recognizer.delegate = self
addGestureRecognizer(recognizer)
}
override func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}
override func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool {
if let panGesture = gestureRecognizer as? UIPanGestureRecognizer {
let velocity = panGesture.velocityInView(superview!)
if fabs(velocity.x) > fabs(velocity.y) { return true }
return false
}
return false
}
视图控制器:
override func viewDidLoad() {
let rightScreenEdgeRecognizer = EdgePanGesture(target: self, action: "changeView:")
rightScreenEdgeRecognizer.edges = .Right
view.addGestureRecognizer(rightScreenEdgeRecognizer)
}
我还尝试通过以下方式识别识别器:
gestureRecognizer.isKindOfClass(UIScreenEdgePanGestureRecognizer)
及
但是都失败了。结果证明我用
手势识别器看的方向是正确的?UIScreenedGepangEstureRecognitizer
,但我应该使用其他GestureRecognitizer
而不是GestureRecognitizer
override func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRequireFailureOfGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
if let recognizer = otherGestureRecognizer as? UIScreenEdgePanGestureRecognizer {
return true
}
return false
}
override func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRequireFailureOfGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
if let recognizer = otherGestureRecognizer as? UIScreenEdgePanGestureRecognizer {
return true
}
return false
}