如何检测iOS 9中的popup窗口何时被解除

我正在更新应用程序以使用通用故事板。 我已经创build了一个popul到一个新的viewcontroller使用接口生成器从一个button拖到我的新视图控制器,并select“呈现为Popover”作为种类。

当用户按下popover(解除它)之外时,我需要在呈现视图控制器中通知,所以我可以撤消他们的行动。 我怎样才能做到这一点?

通常我会手动创buildpopover,并使viewcontroller成为popover的代表; 允许我使用popoverControllerDidDismissPopover委托callback。 然而,这是不赞成在iOS9,即使它不是我不知道在哪里可以findpopup窗口,所以我可以将其委托给我的视图控制器。

不知道您所指的是不赞成使用哪种方法,但仍然可以使用UIPopoverPresentationControllerDelegate来实现此目的。 就像是:

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if segue.identifier == "popoverSegue" { let vc = segue.destinationViewController sortVC.modalPresentationStyle = .Popover sortVC.popoverPresentationController?.sourceRect = filterButton.bounds sortVC.preferredContentSize = CGSizeMake(216, 150) sortVC.popoverPresentationController!.delegate = self } } 

然后使用

 func popoverPresentationControllerDidDismissPopover(popoverPresentationController: UIPopoverPresentationController) 

方法来处理其解雇。

popoverControllerDidDismissPopover:方法已被popoverPresentationControllerShouldDismissPopover:取代popoverPresentationControllerShouldDismissPopover:因为UIPopoverControllerDelegate已被UIPopoverControllerDelegate取代。

从您的呈现视图控制器,符合新的协议,并设置popFor呈现控制器的代表prepareForSegue: ::

 class MyPresentingViewController: UIViewController, UIPopoverPresentationControllerDelegate { override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if let popoverPresentationController = segue.destinationViewController.popoverPresentationController { popoverPresentationController.delegate = self } } func popoverPresentationControllerShouldDismissPopover(popoverPresentationController: UIPopoverPresentationController) -> Bool { return true } } 

然后,您可以使用委托方法来处理您以前想要的解雇方式。

Interesting Posts