[英]UITableViewRowAction action is triggered on swipe instead on tap
我不確定我是否正確理解,這里的文檔有點混亂,但是在UITableView委托的主體中給出了以下代碼:
func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
return true
}
func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
let action = UITableViewRowAction(style: UITableViewRowAction.Style.normal,
title: "Do Something!") { (_, indexPath) in
self.doSomething()
}
return [action]
}
調用doSomething()
方法的操作是在模擬器中完成“向左滑動”操作后,點擊“做某事!”之后執行的 按鈕。 我不希望通話被執行兩次。 我的配置有問題嗎?還是我不了解UITableViewRowAction
的目的?
TLDR:我希望僅在點擊出現的按鈕時才觸發滑動動作回調。
謝謝。
為了防止這種行為,您需要實現新的iOS。
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
let myAction = UIContextualAction(style: .someStyle, title: "Some tilte") { (action, sourceView, completionHandler) in
print("action has been triggered")
completionHandler(true)
}
let preventSwipeFullAction = UISwipeActionsConfiguration(actions: [myAction ])
preventSwipeFullAction .performsFirstActionWithFullSwipe = false // set false to disable full swipe action
return preventSwipeFullAction
}
記住tableView.isEditing
需false
以允許trailingSwipeActionsConfigurationForRowAt
被調用。
completionHandler(true)
//傳遞true啟用處理程序調用操作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.