ios - 窥视和弹出问题
问题描述
我正在 Xcode 9、Swift 4、iOS 11 中构建一个联系人应用程序,但我很难在我的应用程序中实现 Peek and Pop。它应该是这样工作的:在 UITableView 上向用户显示他们的联系人列表。我希望用户能够使用 3D Touch 来查看联系人,而无需打开联系人并在他们希望打开联系人时弹出它。我在Techotopia上找到了一个关于使用 3D Touch 的很棒的教程,但一直无法让它发挥作用。Xcode 没有给我任何错误,但是当我在 iPhone 8 上调试应用程序时,它不起作用。这是我的代码:
func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? {
guard let indexPath = tableView.indexPathForRow(at: location),
let cell = tableView.cellForRow(at: indexPath) else {
return nil }
guard let detailViewController =
storyboard?.instantiateViewController(
withIdentifier: "InfoContactController") as?
InfoContactController else { return nil }
detailViewController.preferredContentSize =
CGSize(width: 0.0, height: 600)
previewingContext.sourceRect = cell.frame
return detailViewController
}
func previewingContext(_ previewingContext: UIViewControllerPreviewing, commit viewControllerToCommit: UIViewController) {
show(viewControllerToCommit, sender: self)
}
在 Techotopia 的教程中,他们使用此代码viewDidLoad
来注册预览委托:
if traitCollection.forceTouchCapability == .available {
registerForPreviewing(with: self, sourceView: view)
} else {
print("3D Touch Not Available")
}
上面的代码在我的控制台中打印“3D Touch Not Available”,尽管我显然使用的是支持 3D Touch 的设备。所以,我在谷歌上做了一些研究,发现这段代码有效:
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
switch traitCollection.forceTouchCapability {
case .available:
print("Available")
case .unavailable:
print("Unavailable")
case .unknown:
print("Unknown")
}
}
这是我的代码。它在 Xcode 中没有给我任何错误,但是当我在应用程序中使用 3D Touch 时,什么也没有发生,我不知道为什么。
任何帮助,将不胜感激!
解决方案
推荐阅读
- sql - Postgresql:如何对列中字符的ASCII码求和?
- android - 在 WebView 中,我如何知道 JS 是否正在使用事件,是否有任何回调方法或任何 eles?
- python - 如何在没有日期解析的情况下运行 pd.read_sql?
- html - 从 R 中的 TMX.com 抓取嵌套表
- android - BottomSheetDialogFragment 总是得到无法膨胀的行为错误
- git - 简化 git flow 工作流程
- c# - 如何在没有实际服务器的情况下获取回调 url 值
- sql - 根据 emp_name、manager_id 和 emp_id 更新 manager_name
- r - 根据 SNP 位置和基因开始/结束坐标从另一个数据框中分配基因名称
- c# - 如何将 ZXingBarcodeImageView 转换为 PDFImage?