iOS:在UIWebView顶部显示模式视图
是否可以在UIWebView的顶部显示模式视图?我有一个加载WebView的UIViewController。然后我想把一个模态视图控制器推到顶部,这样模态视图就可以暂时覆盖WebView 网络视图运行良好;以下是它在视图控制器中的加载方式: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
- (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视为背景。哦,好吧……至少这可能会对外面的人有所帮助!