ios - 如何识别 UITableView 前导和尾随滑动操作的当前事件位置(ios 11)?

标签 ios swift

在 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/

相关文章:

ios - 将 View 放置在屏幕上 Swift

iphone - MKMapView 添加特定位置

ios - 在新的 uiview 中设置当前的 tableview

iphone - iOS Google Drive sdk 集成和权限

ios - 如何从 UITableView 获取可见的顶行

ios - 防止在应用程序中录制垂直视频

ios - 消除多个项目中使用的类重复的专业方法是什么?

ios - 如何存储嵌套字典值

swift - 如何以编程方式向我的 UILabel 添加约束

ios - 移除导航栏和工具栏的边框