如何禁用iOS11中tableview单元格的完全滑动

Meg*_*eno 16 uitableview swipe ios swift4 ios11

UITableViewDelegate.h

// Swipe actions
// These methods supersede -editActionsForRowAtIndexPath: if implemented
// return nil to get the default swipe actions
- (nullable UISwipeActionsConfiguration *)tableView:(UITableView *)tableView leadingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(tvos);
- (nullable UISwipeActionsConfiguration *)tableView:(UITableView *)tableView trailingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(tvos);
Run Code Online (Sandbox Code Playgroud)

但是,我在trailingActions方法中返回nil,我仍然可以在tableview中完全滑动删除.如何防止完全滑动?(我希望用户必须滑动然后按"删除"按钮.

@available(iOS 11.0, *)
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
    return nil
}
Run Code Online (Sandbox Code Playgroud)

编辑:我已经实现了canEditRowAt并在iOS 11/XCode 9/Swift 4更新之前提交了编辑样式.即使在我实现trailingSwipeActionsConfigurationForRowAt之前,也启用了完全滑动.

Vin*_*App 24

实施如下:

func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
    let delete = UIContextualAction(style: .destructive, title: "Delete") { (action, sourceView, completionHandler) in
        print("index path of delete: \(indexPath)")
        completionHandler(true)
    }
    let swipeAction = UISwipeActionsConfiguration(actions: [delete])
    swipeAction.performsFirstActionWithFullSwipe = false // This is the line which disables full swipe
    return swipeAction
}
Run Code Online (Sandbox Code Playgroud)

这是禁用完全滑动的行

swipeAction.performsFirstActionWithFullSwipe = false 
Run Code Online (Sandbox Code Playgroud)

如果你实现任何类似的editingStyle和删除其他功能editActionsForRowAt.