Я новичок в Swift и пытаюсь заставить следующий код работать для предварительного просмотра радиостанций с помощью пика и поп-музыки. Он работает на старых iPhone до 8 Plus, но не работает на новых. Я обнаружил, что peek и pop теперь реализованы через UIContextMenuInteraction, но я не понимаю, как исправить код с ним.
extension StationsController: UIViewControllerPreviewingDelegate {
var forceTouch: Bool {
get { return UIApplication.shared.keyWindow?.traitCollection.forceTouchCapability == .available }
}
func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? {
guard let indexPath = tableView.indexPathForRow(at: location) else { return nil }
guard let cell = tableView.cellForRow(at: indexPath) else { return nil }
guard radioCollection.firstIndex(where: { $0.id == listCollection[indexPath.row].id }) == nil else { return nil }
guard let detailVC = storyboard?.instantiateViewController(withIdentifier: "PreviewStation") as? PreviewStationController else { return nil }
detailVC.imgageStration = listCollection[indexPath.row].image
detailVC.urlStation = listCollection[indexPath.row].link
detailVC.nameStation = listCollection[indexPath.row].name
detailVC.preferredContentSize = CGSize(width: 200, height: 200)
previewingContext.sourceRect = cell.frame
if isMoreHeight {
isMoreHeight = false
tableView.contentSize.height -= 60
}
previewingContext.previewingGestureRecognizerForFailureRelationship.addObserver(self, forKeyPath: "state", options: .new, context: nil)
return detailVC
}
func previewingContext(_ previewingContext: UIViewControllerPreviewing, commit viewControllerToCommit: UIViewController) {
show(viewControllerToCommit, sender: self)
}
}