检测iOS 3D Touch偷看时间(没有弹出)

我刚刚开始在我的应用程序中添加基本的3D Touch功能,并且第一次添加它的尝试进展顺利,看起来相当简单.

我想知道是否有办法检测到一个偷看已经完成,而不是进入流行音乐.

UIViewControllerPreviewingDelegate方法很适合告诉你请求偷看或弹出,但我没有看到一种方式被告知偷看已经结束而没有进入流行音乐.

Peeked ViewController是否有办法知道它当时是偷看并且消失,因为我认为这就足够了.基本上我有一个segue,它通常会在进入视图时创建一些东西,如果我看到它就需要撤消,如果用户选择刚刚结束偷看而不会弹出.目前我似乎无法看到检测这种情况的好方法是能够执行所需的清理.

干杯

解决方法

当您使用registerForPreviewingWithDelegate()注册预览时,将返回符合UIViewControllerPreviewing协议的上下文.该协议包含对用于窥视/弹出的手势识别器的引用,称为previewingGestureRecognizerForFailureRelationship.它可以在同时识别其他手势识别器时使用,但您也可以将自己的对象添加为目标以观察更改.

现在,当你偷看时,这个手势识别器的状态将是.Changed.当您在没有弹出的情况下释放时,状态将变为.Ended.当你弹出时,状态将变为.Cancelled(我实际上预计这是另一种方式,但至少我们可以区分).重要的是,在调用窥视视图控制器的viewDiddisappear之前,此状态会发生变化,因此您可以及时调整标记.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...