iOS 8 SDK : modal UIWebView and camera/image picker

标签 ios objective-c ios8 uiwebview uiimagepickercontroller

我发现,在针对 iOS 8 进行编译(并在 iOS 8 中运行)时,如果 UIWebView 位于以模态方式呈现的 View Controller 。它在直接从窗口 rootViewController “挂起”的 View Controller 或从它推送的 View Controller 中正常工作。

可以在https://dl.dropboxusercontent.com/u/6214425/TestModalWebCamera.zip 找到测试应用程序但我会在下面描述。

我的测试应用程序(使用 Storyboard构建,但实际应用程序不使用它们)有两个 View Controller (未最初命名为 ViewControllerViewController2)。 ViewController 包含在作为 Root View Controller 的 UINavigationController 中。 ViewController 包含一个 UIWebView(工作正常)、一个“显示”(“推送”)的按钮 ViewController2 和一个 UIBarButtonItem 以模态方式呈现 ViewController2ViewController2 有另一个 UIWebView,它在“推送”时有效,但在“呈现”时无效。

ViewControllerViewController2 都加载了:

- (void)viewDidLoad {
  [super viewDidLoad];

  [self.webView loadHTMLString:@"<input type=\"file\" accept=\"image/*;capture=camera\">" baseURL:nil];
}

当尝试使用模态 UIWebView 时,Xcode 在控制台中打印以下内容并关闭应用模态:

Warning: Attempt to present <UIImagePickerController: 0x150ab800> on <ViewController2: 0x14623580> whose view is not in the window hierarchy!

我目前的理论是 UIActionSheetUIAlertController 的变化可能导致了这种情况,但很难证明。以防万一,我会和 Apple 一起开雷达。

是否有人发现了相同的情况和解决方法?

最佳答案

我发现在 iOS 8.0.2 中 iPad 似乎没有这个错误,但 iPhone 仍然有。

但是,在包含 uiwebview 的 View Controller 中覆盖以下内容

-(void)dismissViewControllerAnimated:(BOOL)flag completion:(void (^)(void))completion

并且检查是否存在 presentedViewController 似乎有效。

但需要检查副作用

#import "UiWebViewVC.h"

@interface UiWebViewVC ()

@property (weak, nonatomic) IBOutlet UIWebView *uiwebview;

@end

@implementation UiWebViewVC

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSURL *url = [NSURL URLWithString:@"http://html5demos.com/file-api-simple"];

    NSURLRequest *request = [NSURLRequest requestWithURL:url];

    self.uiwebview.scalesPageToFit = YES;

    [self.uiwebview loadRequest:request];
}


-(void)dismissViewControllerAnimated:(BOOL)flag completion:(void (^)(void))completion
{
    if ( self.presentedViewController)
    {
        [super dismissViewControllerAnimated:flag completion:completion];
    }
}


@end

关于iOS 8 SDK : modal UIWebView and camera/image picker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25942676/

相关文章:

ios - 构建 nspredicate 时的 EXC_BAD_ACCESS

objective-c - 防止在基于 NSTableView 的 View 中的特定单元格上显示上下文菜单

objective-c - iPad : How to know Return key of iPad keyboard is pressed ? 请检查图像

ios - 从 iPhone 6 中的气压计收集相对高度

Swift 从 WebView 调用电话

ios - Swift UIView 内存使用和处理许多 subview

ios - Xcode 4.2 是否兼容 OS4 和 iOS5?

ios - 选择器没有收到来自 NSNotificationCenter 的通知(iOS)

objective-c - 为什么 LLDB 不能打印 view.bounds?

ios - iPhone 上的 UISplitViewController : pop to/show primary view from detail view controller