我想重新创建我们可以在delete
上激活的UITableViewCell
函数,但是要将它放在右侧,我希望将它放在左侧(提示我的原因)重新创造它。)
所以我在每个单元格上添加了UIPanGestureRecognizer
并实现了这两个委托方法:
func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}
func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool {
let cell = gestureRecognizer.view!
if gestureRecognizer is UIPanGestureRecognizer {
let translation = (gestureRecognizer as! UIPanGestureRecognizer).translationInView(cell.superview!)
if abs(translation.x) > abs(translation.y) {
return true
}
}
return false
}
然后我实施了处理平底锅的动作:
func rightPan(sender: UIPanGestureRecognizer) {
var cellFrame = sender.view!.frame
let translation = sender.translationInView(sender.view!.superview!)
switch sender.state {
case .Began:
println("Started")
case .Changed:
cellFrame.origin.x = translation.x
println("Changed")
default:
break
}
}
当我尝试拖动单元格时,我可以在日志中看到“已启动”和“已更改”,但屏幕上没有任何反应。我错过了什么?
答案 0 :(得分:0)
您应该设置框架,而不是原点。
在执行任何操作之前,请保存初始原点x。
然后,在.Changed
案例中,您可以:
let newFrame = CGRect(originX + translation.x, cellFrame.origin.y, cellFrame.size.width, cellFrame.size.height)
// then set your new frame..
cellFrame.frame = newFrame
此外,您可能想要添加翻译值。 translation.x
表示移动的距离,而不是位置。