Замените peek и pop код для работы с UIContextMenuInteraction - PullRequest
0 голосов
/ 29 марта 2020

Я новичок в 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)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...