ios - 如何识别 UITableView 前导和尾随滑动操作 (ios 11) 的当前活动位置?
问题描述
在 iOS 11 中,Apple 引入了两种新方法,在 UITableView 中在行的前沿和后沿处理 Swipe-Actions(这些方法是作为 UITableViewDelegate 的一部分引入的):
tableView( :leadingSwipeActionsConfigurationForRowAt:) tableView( :trailingSwipeActionsConfigurationForRowAt:)
但是,无法识别当前活动的 Swipe-Action。
解决方案
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
}
推荐阅读
- javascript - 对如何构建 Electron 应用程序感到困惑
- json - 在 Spark Dataframe 中加载嵌套的 Json 文件
- python - 使用 Mask-RCNN 的不准确蒙版:楼梯效果和突然停止
- material-ui - 如何在材质ui中的两个按钮之间留出空格?
- python - Numpy数组中两个“岛”/“连接组件”之间的成对距离
- python - 在 jupyter notebook 中导入 pymc3 的问题
- android - Android Theme Style 以编程方式查找并读取正确的属性
- android - 我已经在 Android 应用程序中通过 webrtc 完成了摄像头流共享,但现在我需要与远程对等方共享屏幕
- reactjs - 收到错误:无效的挂钩调用。钩子只能在反应打字稿中的函数体内调用
- android - 具有动态项目数的Android Recyclerview