我需要在视图控制器中使用多个UIWebView
,但在启动应用程序几分钟后,它会因LoadRequest
而崩溃。
我为UIWebViewDelegate
找到了此代码块here,但我无法将其成功转换为C#。
-(void)spinlockedWebViewLoad:(NSArray*)arr {
NSAutoreleasePool* pool=[[NSAutoreleasePool alloc] init];
UIWebView* webView=(UIWebView*)[arr objectAtIndex:0];
NSURLRequest* request=(NSURLRequest*)[arr objectAtIndex:1];
@synchronized(self) {
spinlock=webView;
[webView loadRequest:request];
while (spinlock==webView) [NSThread sleepForTimeInterval:0.1];
}
[pool drain];
}
-(BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
if (spinlock!=webView) {
[NSThread detachNewThreadSelector:@selector(spinlockedWebViewLoad:) toTarget:self withObject:[NSArray arrayWithObjects:webView,request,nil]];
return NO;
}
return YES;
}
答案 0 :(得分:0)
在您的代码中,不需要使用(ObjectiveC样式)委托,只需使用托管事件:
void SpinlockedWebViewLoad (NSObject [] arr)
{
...
UIWebView webView = (UIWebView) arr [0];
webView.ShouldStartLoad += ShouldStartLoad;
...
}
bool ShouldStartLoad (UIWebView webView, NSUrlRequest FileWebRequest, UIWebViewNavigationType navigationType)
{
...
}