Peek and Pop开发问题:如何阻止Preview Controller自动消失
实现Peek & Pop预览松开后保持显示的简便方法
其实这个需求有个非常巧妙的标准解决方式,不需要额外复杂操作——你只需要给预览控制器关联一个空的操作数组就可以了。
系统的逻辑是:只有当预览控制器存在关联操作时,才会在用户松开3D Touch手势后保留预览界面。但这里的“存在操作”并不需要是实际可用的功能,哪怕是一个空数组,也能触发这个行为。
具体实现代码
Swift版本
在你的UIViewControllerPreviewingDelegate实现中,返回预览控制器时添加空操作数组:
func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? { let previewVC = YourPreviewViewController() // 关键代码:赋值空数组,让系统判定存在操作,从而保留预览 previewVC.previewActionItems = [] return previewVC }
Objective-C版本
如果用OC开发,对应的代码是:
- (UIViewController *)previewingContext:(id<UIViewControllerPreviewing>)previewingContext viewControllerForLocation:(CGPoint)location { YourPreviewViewController *previewVC = [[YourPreviewViewController alloc] init]; previewVC.previewActionItems = @[]; return previewVC; }
额外说明
这个方法完全符合系统的设计逻辑,而且后续如果需要添加实际的预览操作(比如分享、删除等),直接往previewActionItems数组里添加UIPreviewAction对象即可,不会有任何冲突或者兼容性问题。
内容的提问来源于stack exchange,提问作者Julien Perrenoud
相关产品推荐
相关产品推荐

