0

iOS アプリケーションで FusionCharts を使用しています。

現在、異なる html ファイルから 2 つの異なるチャートをロードしている 2 つの異なる UIWebViews を持つビュー コントローラーがあります。

問題は、両方のチャートがレンダリングされるが、スクリーンショットでわかるように、そのうちの 1 つが見えないことです。

一度に 1 つのチャートでのみ機能します。どうすればこれを修正できますか?!

スクリーンショット

4

2 に答える 2

0

この問題は、リンクの下の明確な説明を確認するためにUIWebView自体を使用することです http://double-slash.net/2010/10/18/using-multiple-ios-uiwebview-objects/ 2つの方法で修正できますスピンロック機構を採用するか、UIWebview をカスタマイズして実行ループのレンダリング時間を増やします。ここにコードを入力してください

@interface FCXTCustomWebView ()

@property (assign) id idelegate;

@end

@implementation FCXTCustomWebView

- (id)init
{
self = [super init];
if (self)
{
    self.delegate = self;
}

return self;
}

- (id) initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self)
{
    self.delegate = self;
}

return self;
}

- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
    // Initialization code
    self.delegate = self;
}
return self;
}

- (void)setDelegate:(id<UIWebViewDelegate>)delegate
{
 _idelegate = delegate;
}

- (void)stopRunLoop
{
CFRunLoopRef runLoop = [[NSRunLoop currentRunLoop] getCFRunLoop];
CFRunLoopStop(runLoop);
}

- (void) webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
[self performSelector:@selector(stopRunLoop) withObject:nil afterDelay:.01];

if ([_idelegate respondsToSelector:@selector(webView:didFailLoadWithError:)])
{
    [_idelegate webView:webView didFailLoadWithError:error];
}
}

- (BOOL) webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
if ([_idelegate respondsToSelector:@selector(webView:shouldStartLoadWithRequest:navigationType:)])
{
    return [_idelegate webView:webView shouldStartLoadWithRequest:request navigationType:navigationType];
}
else
{
    return YES;
}
}

- (void) webViewDidFinishLoad:(UIWebView *)webView
{
[self performSelector:@selector(stopRunLoop) withObject:nil afterDelay:.01];

if ([_idelegate respondsToSelector:@selector(webViewDidFinishLoad:)])
{
    [_idelegate webViewDidFinishLoad:webView];
}
}

- (void) webViewDidStartLoad:(UIWebView *)webView
{
[self performSelector:@selector(stopRunLoop) withObject:nil afterDelay:.1];
if ([_idelegate respondsToSelector:@selector(stopRunLoop)])
{
    [_idelegate webViewDidStartLoad:webView];
}
}

- (void) loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL
{
[super loadHTMLString:string baseURL:baseURL];
CFRunLoopRunInMode((CFStringRef)NSDefaultRunLoopMode, 1.5, NO);
}
@end
于 2013-03-26T17:00:38.020 に答える
0

この返信は遅すぎるかもしれません。HighCharts でも同じ問題が発生しました。UIWebView をサブクラス化する必要はありません。グラフごとに異なる Javascript ファイルが必要です。それはうまくいくでしょう。

于 2013-12-30T21:49:31.317 に答える