在 iOS 11 中,Apple 引入了两种新方法来处理 UITableView 中行前缘和后缘的 Swipe-Actions(这些方法是作为 UITableViewDelegate 的一部分引入的):
tableView(:leadingSwipeActionsConfigurationForRowAt:) tableView(:trailingSwipeActionsConfigurationForRowAt:)
但是,无法识别当前事件的滑动操作。
最佳答案
Swift 4: 幸运的是,我能够帮助自己,并愿意与您分享我的解决方案:
extension UITableView {
enum SwipeActionPosition {
case unknown, leading, trailing
}
var activeSwipeActionPosition:SwipeActionPosition {
var position = SwipeActionPosition.unknown
for view in subviews {
if String(describing: type(of:view) ) == "UISwipeActionPullView" {
if view.frame.origin.x > 0.0 && view.frame.origin.x < self.frame.width {
position = .trailing
} else if view.frame.origin.x == 0.0 {
position = .leading
}
break
}
}
return position
}
}
示例:
if self.tableView.activeSwipeActionPosition == .leading {
//active leading swipe action
} else if self.tableView.activeSwipeActionPosition == .trailing {
//active trailing swipe action
} else {
//unknown
}
关于ios - 如何识别 UITableView 前导和尾随滑动操作的当前事件位置(ios 11)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51928286/