UISplitViewControllerDelegate / UIPopoverDelegate方法在从右向左滑动时未调用

时间:2013-10-16 22:13:01

标签: ios objective-c uisplitviewcontroller uipopovercontroller

我有一个UISplitViewController子类,它实现了UISplitViewControllerDelegateUIPopoverController委托挂钩,以便在通过以下方式显示或解除主窗格弹出窗口时收到通知:

  1. splitViewController:popoverController:willPresentViewController:
  2. popoverControllerShouldDismissPopover:
  3. 此拆分视图控制器已将presentsWithGesture设置为YES

    当调用1.时,我确保将popover的委托(方法调用中的第二个参数)设置为self

    什么有效:

    • 当主窗格可见时,当我在主窗格外部点击时,应该关闭挂钩被调用
    • 隐藏主窗格,当我点击导航栏按钮以显示主窗格时,将显示挂钩被调用
    • 隐藏主窗格时,当我从左向右滑动以显示主窗格时,将显示挂钩被调用

    什么行不通:

    • 当主窗格可见时,当我从右向左滑动以隐藏主窗格时,不会调用任何委托挂钩

    我很确定所有代表都已正确设置。

    在调试器中,我抓住了popover控制器的内存引用(总是相同的),并且在从右向左滑动之后,我确认它的委托仍然正确设置 - 这些方法都没有被调用。

    设置有什么问题,或者这是UIKit错误/疏忽?

1 个答案:

答案 0 :(得分:0)

经过一番挖掘之后,我发现在外面敲击(一个解雇)和向外滑动(一个隐藏)之间存在差异。这就是你需要的,以及我现在用来检测“轻扫”的东西:

UISplitViewControllerDelegate splitViewController:willHideViewController:withBarButtonItem:forPopoverController: