iOS开发中UIPopoverController的使用详解

2020-01-14 17:18:36王旭

代码说明:
复制代码
.......
  //5.设置代理
    self.popover.delegate=self;
}

 

#pragma mark-代理方法
//popoverController消失的时候调用
-(void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
{
}
//popoverController的位置改变的时候调用(如竖屏变横屏)
-(void)popoverController:(UIPopoverController *)popoverController willRepositionPopoverToRect:(inout CGRect *)rect inView:(inout UIView *__autoreleasing *)view
{
    
}
//用来决定用户点击了蒙版后,popoverController是否可以dismiss,返回YES代表可以,返回NO代表不可以
-(BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController
{
    return NO;
}


七、防止点击UIPopoverController区域外消失

 

默认情况下

只要UIPopoverController显示在屏幕上,UIPopoverController背后的所有控件默认是不能跟用户进行正常交互的

点击UIPopoverController区域外的控件,UIPopoverController默认会消失

 

要想点击UIPopoverController区域外的控件时不让UIPopoverController消失,解决办法是设置passthroughViews属性

复制代码
@property (nonatomic, copy) NSArray *passthroughViews;
这个属性是设置当UIPopoverController显示出来时,哪些控件可以继续跟用户进行正常交互。这样的话,点击区域外的控件就不会让UIPopoverController消失了

 

代码示例:

复制代码
- (IBAction)buttonClick:(UIButton *)sender {
    
    //1.新建一个popoverController并设置其内容控制器
    YYMenuViewController *menuVc=[[YYMenuViewController alloc]init];
    self.popover=[[UIPopoverController alloc]initWithContentViewController:menuVc];
    
    //设置过滤掉一些控件
    self.popover.passthroughViews=@[self.switchview];
    
    //2.显示
    //2.1第一种方式
//    [self.popover presentPopoverFromBarButtonItem:<#(UIBarButtonItem *)#> permittedArrowDirections:<#(UIPopoverArrowDirection)#> animated:<#(BOOL)#>];