【问题标题】:MGSplitViewController won't dismiss itself when master button is clicked a second time第二次单击主按钮时,MGSplitViewController 不会自行关闭
【发布时间】:2012-04-05 16:23:46
【问题描述】:

这基本上是Dismissing iPad UIPopoverController when BarButtonItem is pushed while it's open 的延续,但是我认为这个问题足够大,需要另一个问题。

基本上,他们希望在单击 barbuttonitem(由 splitviewcontroller 提供)时显示弹出框,然后在再次单击相同的 barbuttonitem 时隐藏弹出框。他们通过调用解决了这个问题:

- (void)splitViewController:(UISplitViewController*)svc popoverController:(UIPopoverController*)pc willPresentViewController:(UIViewController *)aViewController{
    if ([popoverController isPopoverVisible]) {
        [popoverController dismissPopoverAnimated:YES];
    }
}

但是,我遇到了第一次单击 barbuttonitem 时,此方法被正确调用并显示弹出框的问题。但是,在弹出框打开时对 barbuttonitem 的任何后续点击,都不会调用此方法。

更令人费解的是,当我通过其他方式(单击弹出框外部)关闭弹出框视图时,弹出框会自动关闭。但是,单击按钮本身不会关闭弹出框,也不会调用“willPresentViewController”方法。

还有其他方法可以捕获此按钮的点击动作吗?或者对为什么在弹出窗口打开时单击按钮不调用该方法的任何想法?

【问题讨论】:

    标签: objective-c uisplitviewcontroller uibarbuttonitem


    【解决方案1】:

    因此,当您再次单击“主”按钮时,似乎正常的 UISplitViewController 会自动关闭,但是,我使用的是 MGSplitViewController。所以我修改了 MGSplitViewController.m(特别是 showMasterPopover :) 来处理当它第二次点击按钮时自行解散,如下所示:

    -(IBAction)showMasterPopover:(id)sender
    {
        if (_hiddenPopoverController && !(_hiddenPopoverController.popoverVisible)) 
        {
            // Inform delegate.
            if (_delegate && [_delegate respondsToSelector:@selector(splitViewController:popoverController:willPresentViewController:)]) 
            {
                [(NSObject <MGSplitViewControllerDelegate> *)_delegate splitViewController:self popoverController:_hiddenPopoverController willPresentViewController:self.masterViewController];
            }
            // Show popover.
            [_hiddenPopoverController presentPopoverFromBarButtonItem:_barButtonItem permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
        }
        else if(_hiddenPopoverController && _hiddenPopoverController.popoverVisible)
        {
            [_hiddenPopoverController dismissPopoverAnimated:YES];
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-05
      • 1970-01-01
      相关资源
      最近更新 更多