contextMenuConfigurationForRowAt でUITableView
長押し時にメニューを表示しているのですが、
shouldHighlightRowAtが呼ばれてshouldHighlightRowAt
内部に書かれている処理が実行されてしまいます。
shouldHighlightRowAt
とcontextMenuConfigurationForRowAt
が呼ばれるのが順不同っぽいのですが、
contextMenu
表示時にshouldHighlightRowAt
内部で処理を分岐する方法はないでしょうか?
きちんと長押しされれば、contextMenuConfigurationForRowAt
→shouldHighlightRowAt
の順番に呼ばれるので、フラグでごまかしていますが、管理が煩わしくなるので、余計なフラグなどを設定せずに実現できないでしょうか?
swift
1 2var inProcess = false 3 4func tableView(_ tableView: UITableView, shouldHighlightRowAt indexPath: IndexPath) -> Bool { 5 if inProcess { return false } 6 // 略 7} 8 9func tableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? { 10 inProcess = true 11 DispatchQueue.main.asyncAfter(deadline: .now() + 0.01) { 12 self.inProcess = false 13 } 14 // 略 15} 16
あなたの回答
tips
プレビュー