iOS14.4模拟器中UITableView的trailingSwipeActionsConfigurationForRowAt失效
UITableView侧滑操作iOS14.4模拟器失效的解决方案
针对你遇到的trailingSwipeActionsConfigurationForRowAt在iOS14.4模拟器不生效的问题,以下是经过验证的修复步骤:
1. 必须实现canEditRowAt方法
iOS14及更早版本要求显式实现该方法来确认行是否可编辑,否则侧滑操作不会被触发。添加以下代码,和你原逻辑保持一致:
func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool { return indexPath != IndexPath(row: 0, section: 0) }
2. 检查SF Symbols的兼容性
你使用的自定义sfSymbol方法可能在iOS14上存在兼容性问题,导致图片加载失败。替换为系统原生的初始化方式测试:
// 修改删除按钮图片 deleteAction.image = UIImage(systemName: "trash")?.withTintColor(.white, renderingMode: .alwaysOriginal) // 修改编辑按钮图片 editAction.image = UIImage(systemName: "pencil")?.withTintColor(.black, renderingMode: .alwaysOriginal)
如果使用的是iOS15+新增的符号,需要替换为iOS14支持的符号(参考SF Symbols 2的符号列表)。
3. 调整UIContextualAction的style
将删除操作的style改为.destructive,这更符合系统设计规范,也能避免iOS14的潜在兼容问题:
let deleteAction = UIContextualAction(style: .destructive, title: "") { [weak self] (_, _, completion) in self?.onDeleteActionClicked(at: indexPath) completion(true) }
4. 验证单元格交互设置
确认你的单元格userInteractionEnabled属性为true,且contentView的子视图没有完全覆盖单元格(避免手势被拦截)。
内容的提问来源于stack exchange,提问作者OmegaRaxxus
相关产品推荐
相关产品推荐

