ios - 检测弹出窗口关闭

标签 ios uipopovercontroller

我想玩 UIPopupController,我知道我无法检测到弹出窗口何时关闭。 我的步骤:
1. 从 XCode 创建示例 (File -> New Project -> Utilitiy Application)
2.在MainViewController.h中添加UIPopoverControllerDelegate

#import "FlipsideViewController.h"

@interface MainViewController : UIViewController <FlipsideViewControllerDelegate,UIPopoverControllerDelegate>

@property (strong, nonatomic) UIPopoverController *flipsidePopoverController;

- (IBAction)showInfo:(id)sender;

@end
  1. 在主视图 Controller 中:

    - (IBAction)showInfo:(id)sender
    {
        if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
            FlipsideViewController *controller = [[FlipsideViewController alloc] initWithNibName:@"FlipsideViewController" bundle:nil];
            controller.delegate = self;
            controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
            [self presentModalViewController:controller animated:YES];
        } else {
            if (!self.flipsidePopoverController) {
                FlipsideViewController *controller = [[FlipsideViewController alloc] initWithNibName:@"FlipsideViewController" bundle:nil];
                controller.delegate = self;

                self.flipsidePopoverController.delegate = self

                self.flipsidePopoverController = [[UIPopoverController alloc] initWithContentViewController:controller];
            }
            if ([self.flipsidePopoverController isPopoverVisible]) {
                [self.flipsidePopoverController dismissPopoverAnimated:YES];
            } else {
                [self.flipsidePopoverController presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
            }
        }
    }

    -(void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
    {
        NSLog(@"OLOLO");
    }

但是当我点击某处,弹出窗口消失时,控制台中没有 NSLog 消息。 我做错了什么?

最佳答案

将弹出窗口的委托(delegate)设置为自己,您也可以使用两个弹出窗口委托(delegate),即:-

 /* Called on the delegate when the popover controller will dismiss the popover. Return NO to prevent the dismissal of the view.
 */
- (BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController;

/* Called on the delegate when the user has taken action to dismiss the popover. This is not called when -dismissPopoverAnimated: is called directly.
 */
- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController;

关于ios - 检测弹出窗口关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10319392/

相关文章:

ios - 我怎样才能激活以前停用的约束?

ios - 调用 [super dealloc] 和调用父类(super class)方法实现的区别

ios - SplitViewController 模板手动显示弹出窗口?

iphone - UIpopover 中带提示的导航栏

ios - Swift UIBarButtonItem 不更新

ios - 是否可以在其他 UI 元素后面显示 Popover?

ios - 如何在 swift 4.0 中将数据附加到标签的末尾

ios - Qt和iOS之间如何通信?

iphone - 使用 NSXMLParser 解析 XML 的最有效方法

ipad - UISearchDisplayController自动创建一个UIPopovercontroller以显示内容搜索结果?如何解散呢?