【发布时间】:2017-01-05 18:05:45
【问题描述】:
我有一个 UITableView,我添加了一个 UILongPressGestureRecognizer。当一个单元格被按住时,它会触发一个评估手势状态的开关:
switch state {
case UIGestureRecognizerState.began:
//Takes a snapshot of the cell, shows image and hides cell
print("User held cell.")
case UIGestureRecognizerState.changed:
//Runs when cell-snapshot is dragged
print("LocationInView is: \(location)")
default:
//Runs when the user "lets go" of the cell
print("User let go.")
}
在测试期间,如果将单元格拖到表格上方或下方并松开,则会冻结。如果拖回来越过桌子放开,没关系。
表格不会占据整个屏幕,如果用户试图将其拖出表格边界,则单元格会停在表格的边缘。当您在“越界”时放手时,单元格将永久冻结在边缘。
如果开关告诉我手势完成,我可以简单地隐藏单元格,但问题是默认设置永远不会触发。如果用户在离开桌子后抬起手指,则开关永远不会评估为默认值。
现在 UIGestureRecognizerState 有“cancelled”、“ended”和“failed”状态,为什么它们不触发默认状态?我有打印语句来显示正常的手指抬起:
然后在桌子区域外抬起手指:
【问题讨论】:
标签: ios swift uitableview uigesturerecognizer