5

我有一些内容项目的列表,它是表格视图,以及每个项目的选项控制器。我在旧设备的 3D 触摸或长按上展示此选项控制器。我以非常基本的方式实现了它:

extension ViewController {
    func checkForForceTouch() {
        if #available(iOS 9.0, *) {
            if traitCollection.forceTouchCapability == .available {
                registerForPreviewing(with: self, sourceView: tableView)
            } else {
                addLongPressRecognizer()
            }
        } else {
            addLongPressRecognizer()
        }
    }

...
}

@available(iOS 9.0, *)
extension ViewController: UIViewControllerPreviewingDelegate {
    public func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? {
        if let indexPath = tableView.indexPathForRow(at: location) {
            let cell = tableView.cellForRow(at: indexPath)!
            previewingContext.sourceRect = cell.frame

            return self.optionsController(for: indexPath)
        } else {
            return nil
        }
    }

    public func previewingContext(_ previewingContext: UIViewControllerPreviewing, commit viewControllerToCommit: UIViewController) {
        viewControllerToCommit.modalPresentationStyle = .overFullScreen
        present(viewControllerToCommit, animated: true, completion: nil)
    }
}

一切正常,除了一件事:如果 3d 触摸选项控制器显示在速览视图中。我想立即展示它,就像 Apple Music 应用一样。有办法吗?

4

0 回答 0