UIPopoverController 在 iOS 8 / Xcode 6 中没有关闭

Posted

技术标签:

【中文标题】UIPopoverController 在 iOS 8 / Xcode 6 中没有关闭【英文标题】:UIPopoverController not dismissing in iOS 8 / Xcode 6 【发布时间】:2014-09-30 14:42:25 【问题描述】:

我的一个在 ios 7 中运行良好的应用程序包含一个 UIPopoverController,当用户点击它外部时它会被关闭。

UIPopoverController *myPopover = [[UIPopoverController alloc] initWithContentViewController:_myVC];
myPopover.popoverContentSize = CGSizeMake(300.0, 600.0);
[myPopover presentPopoverFromRect:sender.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

当我在 iOS 8 中运行我的应用时,没有崩溃,但是当我尝试通过点击外部退出弹出框时,会出现一条错误消息:

attempt to dismiss modal view controller whose view does not currently appear.

控制台还告诉我:modalViewController = _myVC ...

我无法在 iOS 8 中逃脱弹出框!!

有什么想法吗?

使用 _myVC 代码更新:

@protocol MyVCDelegate <NSObject>
@optional
- (void)myVCDoneProc:(NSURL *)sender;
- (void)calculateFileLengthConvolve;
- (void)checkConvolveTime;
@end

@interface MyVC: UIViewController <FirstDelegate, SecondDelegate>

    UIImageView                 *mDimView;
    UIActivityIndicatorView     *mSpinner;
    IBOutlet UISlider           *mMixSlider;
    IBOutlet UILabel            *mTimeWarningLabel;
    IBOutlet UIButton           *mButton;


@property (nonatomic, weak) AudioFilesViewController *AFVC;
@property (nonatomic, strong) IBOutlet UIView *view;
@property (nonatomic, assign) id<UnivConvolutionViewControllerDelegate>delegate;
@property NSString *filePath;


- (void)calculateFileLength;
- (IBAction)process;
- (IBAction)play:(UIButton *)sender;
- (IBAction)stop:(UIButton *)sender;
- (void)checkConvolveTime;

@end

@interface myVC () <UITableViewDelegate, UITableViewDataSource>
@end
@implementation myVC

    IBOutlet UITableView        *mImpulsesTableView;
    NSArray                     *mImpulses;
    NSString                    *irPath;
    NSArray                     *userImpulses;


@synthesize AFVC = _AFVC;
@synthesize view;
@synthesize delegate;
@synthesize filePath = mFilePath;

- (void)init 
    if(self = [super init]) 
        [[NSBundle mainBundle] loadNibNamed:@"MyVC" owner:self options:nil];

        // create mImpulses
        // set button titles and font, other init... etc.

    


#pragma mark behavior - class methods
// The only view code is in:
- (void)process 
        if (mDimView == nil) 
        mDimView = [[UIImageView alloc] initWithImage:[DimmingImage dimmingImageWithSize:self.view.bounds.size]];
        mDimView.userInteractionEnabled = YES;
        mSpinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
        mSpinner.hidesWhenStopped = YES;
        [mDimView addSubview:mSpinner];
        mSpinner.center = CGPointMake(mDimView.bounds.size.width/2.0f,
                                      mDimView.bounds.size.height/2.0f);
    

    mDimView.alpha = 0.0f;
    [self.view addSubview:mDimView];
    [UIView animateWithDuration:0.35f animations:^
        mDimView.alpha = 0.7f;

     completion:^(BOOL finished) 
        [mSpinner startAnimating];
    ];


#pragma mark FirstDelegate & Second Delegate

// FirstDelegate method to remove subviews when processing is complete
- (void)hideActivityView

    dispatch_async(dispatch_get_main_queue(), ^

        [mSpinner stopAnimating];
        [UIView animateWithDuration:0.35f animations:^
        mDimView.alpha = 0.0f;

     completion:^(BOOL finished) 
        [mDimView removeFromSuperview];
        ];
    );


#pragma mark UITableViewDelegate & DataSource

#pragma mark 

@end

【问题讨论】:

_myVC 的生命周期是什么?是否多次展示? _myVC 只创建一次,使用 xib-其视图出口设置在文件所有者中。每次我按下 UIButton 时都会显示 - 上面的代码在其中运行 你能显示那个代码吗?我怀疑视图控制器中的某些东西正在欺骗弹出框。 我已根据您的要求编辑了我的问题。谢谢杰弗里 ..运气好能解决这个问题吗?我遇到了同样的问题,不知道该怎么办。 【参考方案1】:

我在模态演示中遇到了一些问题。我正在做的错误是在 viewDidLoad 中以模态方式呈现它。您可以尝试在 viewDidAppear 中呈现它。这解决了我的问题。

【讨论】:

以上是关于UIPopoverController 在 iOS 8 / Xcode 6 中没有关闭的主要内容,如果未能解决你的问题,请参考以下文章

ios7 NSInvalidArgumentException 呈现 UIPopoverController

UIPopoverController 在 iOS 8 中的大小不正确

iOS 7 上的 UIPopoverController 和键盘导致奇怪的动画

iOS 7 上 UIPopoverController 后面的色调

如何在 iOS7 的 UIPopoverController 中更改导航栏背景/颜色?

当键盘出现时,UIPopoverController 在 iOS 7 上奇怪地移动