2013-03-21 3 views
0

iOS 응용 프로그램에서 FusionCharts를 사용하고 있습니다.iOS의 FusionCharts : 보이지 않는 두 번째 차트

현재 다른 HTML 파일에서 두 개의 다른 차트를로드하는 두 개의 다른 UIWebViews보기 컨트롤러가 있습니다.

두 차트가 렌더링되지만 그 중 하나는 스크린 샷에서 볼 수있는 것처럼 보이지 않는 것이 문제입니다.

한 번에 하나의 차트에서만 작동합니다. 이 문제를 어떻게 해결할 수 있습니까?! 이 문제는

screenshot

+0

중복 된 ID가 있는지 확인 했습니까? 최신 FusionCharts (3.3.0.18739)를 사용하고 있습니까? –

답변

0

문제는 사용자 정의에 의해 실행 루프의 렌더링 시간 스핀 잠금 장치를 채택 또는 증가 링크 http://double-slash.net/2010/10/18/using-multiple-ios-uiwebview-objects/ 그것은 두 가지 방법으로 해결할 수 있습니다 아래의 체크 아웃 명확한 설명을 위해있는 UIWebView의 그것 자체로이다 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 
0

이 답변은 너무 늦었을 수도 있습니다. HighCharts에서 같은 문제가 발생했습니다. UIWebView를 하위 클래스로 만들 필요가 없습니다. 각 그래프마다 다른 Javascript 파일이 필요합니다. 그게 효과가있다.

관련 문제