2016-02-02 41 views
1

如何知道的UIViewController已经注册或不支持3D触摸预览醚酮(PEEK)和commit(POP)查找的UIViewController登记或者不进行3D触摸支持

以下方法注册

UIViewController: 
(id <UIViewControllerPreviewing>)registerForPreviewingWithDelegate:(id<UIViewControllerPreviewingDelegate>)delegate sourceView:(UIView *)sourceView 

如果我们多次注册视图控制器,然后相应的委托方法(UIViewControllerPreviewingDelegate)被多次调用。

+0

我不知道,但你不能通过实施检查 做'如果([self.delegate respondsToSelector:@selector(方式:)])' 将返回如果真亲每个代表已设置。 “methodName”可以是各自协议中的任何方法。 –

+0

@Shehzad Ali:即使我实现了委托方法,并且未注册视图控制器以获得3D触摸支持,这将返回true。 –

回答

0

我不明白你为什么多次注册同一个视图。你可以不喜欢在viewDidLoad中以下,以确保registerForPreviewingWithDelegate方法

// Register for 3D Touch Previewing if available 
if ([self.traitCollection respondsToSelector:@selector(forceTouchCapability)] && 
     (self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable)) 
{ 
    [self registerForPreviewingWithDelegate:self sourceView:self.view]; 
} 

一次的召唤,尽管它是由OS本身管理的,如果你想取消注册PEEK和流行的观点,你可以调用unregisterForPreviewingWithContext

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/#//apple_ref/occ/instm/UIViewController/unregisterForPreviewingWithContext

+0

感谢您的答案,但在我的情况下,我有'UIViewController'类对象的引用,我需要从这个类对象的外部添加3D Touch支持,如果它已经不支持。 –

+0

您是否尝试先调用unregisterForPreviewingWithContext然后注册? – inankupeli