TrailingSwipeAction: как отключить автоматическое удаление при пролистывании?

Я обновляю свои tablerowactions до эквивалента swift 4, чтобы иметь возможность устанавливать значки вместо текста в качестве кнопок, которые отображаются, когда пользователь проводит пальцем влево по элементу таблицы. Моя проблема заключается в том, что первое определенное действие (в моем случае действие удаления) автоматически запускается, если пользователи проводят пальцем справа налево, а не просто показывают все доступные действия. Я хотел бы деактивировать это поведение. Мой код в настоящее время выглядит так:

 override func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
    let deleteAction = UIContextualAction(style: .normal, title:  "", handler: { (ac:UIContextualAction, view:UIView, success:(Bool) -> Void) in
        // implemantion of delete-button here 
        // ...

        success(true)
    })


    deleteAction.image = #imageLiteral(resourceName: "deleteIcon")
    deleteAction.backgroundColor = .red
    return UISwipeActionsConfiguration(actions: [deleteAction])
}

person LarsGvB    schedule 11.03.2018    source источник


Ответы (1)


UISwipeActionsConfiguration имеет свойство, позволяющее отключить это поведение, называемое performsFirstActionWithFullSwipe. (документация)

Итак, вместо:

return UISwipeActionsConfiguration(actions: [deleteAction])

сделать что-то вроде этого:

let configuration = UISwipeActionsConfiguration(actions: [deleteAction])
configuration.performsFirstActionWithFullSwipe = false
return configuration
person Dima    schedule 11.03.2018