我有一些内容项目的列表,它是表格视图,以及每个项目的选项控制器。我在旧设备的 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 应用一样。有办法吗?