过去我使用MGSwipeTableCell滑动来关闭单元格,但是我已经取得了很多成功,但是我当前的任务调用以相同的行为滑动整个部分。
我目前在UITableView中有一个滑动手势识别器,当触发滑动手势时,我计算接收到的触摸部分,并删除填充该部分的对象(在核心数据中),然后调用删除动画:
//Delete objects that populate table datasource
for notification in notifications {
notificationObject.deleted = true
}
DataBaseManager.sharedInstance.save()
let array = indexPathsToDelete
let indexSet = NSMutableIndexSet()
array.forEach(indexSet.add)
//Delete section with animation
self.notificationsTableView.deleteSections(indexSet as IndexSet, with: .left)
这有效,但并不理想。理想情况下,我们希望整个部分用手指拖动(当在特定点释放时,它会离开屏幕),类似于MGSwipeTableCell。解决这个问题的最佳方法是什么?是否有另一个允许滑动删除部分的库(我找不到任何部分)?或者这是我必须自己创造的东西。
答案 0 :(得分:2)
我没有测试过这个,但想法如下。观看视图(self.header
)并使用touchesBegan...
方法检测用户将手指放在屏幕上。然后,使用touchesMoved...
方法跟随手指并计算最后一个偏移与下一个偏移之间的差异。它应该增长1(或更多),具体取决于用户移动手指的速度。使用此值减去单元格origin.x
的{{1}}。
contentView
答案 1 :(得分:0)
Brandon的答案是正确的,但是,当使用触摸开始和其他触摸委托方法时,INSPullToRefresh库存在问题。
我必须做的是实现UIPanGestureRecognizer并在触发手势识别器事件时跟踪触摸