随着最近几款 iPhone 型号中 3D 触摸的丢失,我正在寻找一种方法来替换我的应用商店应用程序中的 3D 触摸支持,该应用程序有一个 UITableView,当你按下一个单元格时,它会显示一个预览视图控制器。
在 UITableView 中使用 3D 触摸非常简单,只需使用即可支持 UITableViews:
registerForPreviewing(with: self, sourceView: tableView)
...然后只需设置一些委托方法,例如:
func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? {
if let indexPath = tableView.indexPathForRow(at: location) {
previewingContext.sourceRect = tableView.rectForRow(at: indexPath)
let storyboard = UIStoryboard.init(name: "Main", bundle: nil)
let previewView = storyboard.instantiateViewController(withIdentifier: "PreviewView") as! PreviewView
previewView.preferredContentSize = CGSize(width: 300, height: 400)
let cell = tableView.cellForRow(at: indexPath) as! CustomCell
previewView.structureId = cell.cellId
return previewView
}
}
但我不清楚如何使用 UIContextMenuInteraction 来确定哪个 tableview 单元格被长按。