Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS:在UIWebView顶部显示模式视图_Ios_Uiwebview_Modalviewcontroller - Fatal编程技术网

iOS:在UIWebView顶部显示模式视图

iOS:在UIWebView顶部显示模式视图,ios,uiwebview,modalviewcontroller,Ios,Uiwebview,Modalviewcontroller,是否可以在UIWebView的顶部显示模式视图?我有一个加载WebView的UIViewController。然后我想把一个模态视图控制器推到顶部,这样模态视图就可以暂时覆盖WebView 网络视图运行良好;以下是它在视图控制器中的加载方式: - (void)loadView { // Initialize webview and add as a subview to LandscapeController's view myWebView = [[[UIWebView al

是否可以在UIWebView的顶部显示模式视图?我有一个加载WebView的UIViewController。然后我想把一个模态视图控制器推到顶部,这样模态视图就可以暂时覆盖WebView

网络视图运行良好;以下是它在视图控制器中的加载方式:

- (void)loadView {

    // Initialize webview and add as a subview to LandscapeController's view
    myWebView = [[[UIWebView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease];
    myWebView.scalesPageToFit = YES;
    myWebView.autoresizesSubviews = YES;
    myWebView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);  
    myWebView.delegate = self;
    self.view = myWebView; 
}
但是,如果尝试从viewDidLoad中加载模态视图控制器,则不会显示模态视图:

- (void)viewDidLoad {

    [super viewDidLoad];

    // Edit dcftable.html with updated figures
    NSMutableString *updated_html = [self _updateHTML:@"dcftable"];

    // Load altered HTML file as an NSURL request
    [self.myWebView loadHTMLString:updated_html baseURL:nil];

    // If user hasn't paid for dcftable, then invoke the covering modal view
    if (some_condition) {

        LandscapeCoverController *landscapeCoverController = [[[LandscapeCoverController alloc] init] autorelease ];
        [self presentModalViewController:landscapeCoverController animated:YES];    
    }   


}
我怀疑需要对UIWebView委托执行一些操作,以使其接收新的模态视图…但在任何地方都找不到任何关于此的讨论或示例…同样,目标是调用覆盖WebView顶部的模态视图


谢谢你的任何想法提前

我也无法让它在
viewDidLoad
中工作,但我让它以另一种方法工作。以下是我所做的:

- (void)viewDidLoad {
    ...

    if (some_condition) {
        [NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(showModal) userInfo:nil repeats:NO];
    } 
}

- (void)showModal {
    LandscapeCoverController *landscapeCoverController = [[[LandscapeCoverController alloc] init] autorelease ];
    [self presentModalViewController:landscapeCoverController animated:YES];    
}
基本上,如果没有在
viewDidLoad
中调用它,它就可以工作。我希望我能解释为什么,我自己也很好奇,但这至少能解决你的问题


希望这有帮助

我遇到了同样的问题。将
presentModalViewController
调用从
viewDidLoad
移动到
viewDidAppear
就可以实现这一点。

使用
[自执行选择器:@selector(showModal)with Object:nil afterDelay:0.2]可能更简单一些而不是计时器。嘿,感谢donkim的快速完整响应!在本例中,您拥有的代码实际上并不适用于我。不知道为什么,但我认为模态视图必须从ViewDidEmbeen调用。谢谢Chris!正如你所说,我真的做到了。我不确定我是否理解为什么这是有效的…但至少它是有效的。非常感谢!顺便说一句,对于其他阅读本文的人来说…模态视图实际上并没有达到我在这里想要的效果。当模式视图出现时,背景将完全变白,而不是模糊地将webview视为背景。哦,好吧……至少这可能会对外面的人有所帮助!