web-dev-qa-db-ja.com

UIWebView loadHTMLStringが空白の画面を表示する

UIWebViewのloadHTMLStringに奇妙な問題があります。コンテンツのHTML文字列でloadHTMLStringを呼び出したときにのみ空白のビューが表示されます。 htmlstringのコンテンツが何であるかは関係ありません。単に何もしません。

奇妙なことに、それが数週間前にシミュレータとデバイスでテストしたときに機能していたということです。私のコードは以下です:

NSMutableString *sHtmlBuf = [NSMutableString stringWithString:@"<body style=\"background-color: #000000; color: #FFFFFF; font-family: Helvetica; font-size: 10pt; width: 300px; Word-wrap: break-Word;\">"];

if ([m_oCallArray count] > 0 || [m_oPutArray count] > 0) {
    [sHtmlBuf appendString:sWarrTitle];

    if ([m_oCallArray count] > 0) {
        NSString *formattedCall = [NSString stringWithFormat:@"%@ %@<br />",sCallTitle,[self arrayToString:m_oCallArray]];
        [sHtmlBuf appendFormat:@"%@ ",formattedCall];
    }

    if ([m_oPutArray count] > 0) {
        NSString *formattedPut = [NSString stringWithFormat:@"%@ %@<br />",sPutsTitle,[self arrayToString:m_oPutArray]];
        [sHtmlBuf appendFormat:@"%@ ",formattedPut];
    }

}

if ([m_oBullArray count] > 0 || [m_oBearArray count] > 0) {
    [sHtmlBuf appendString:sCbbcTitle];

    if ([m_oBullArray count] > 0) {
        NSString *formattedBull = [NSString stringWithFormat:@"%@ %@<br />",sBullTitle,[self arrayToString:m_oBullArray]];
        [sHtmlBuf appendFormat:@"%@ ",formattedBull];
    }

    if ([m_oBearArray count] > 0) {
        NSString *formattedBear = [NSString stringWithFormat:@"%@ %@<br />",sBearTitle,[self arrayToString:m_oBearArray]];
        [sHtmlBuf appendFormat:@"%@ ",formattedBear];
    }

}

if ([m_oOtherArray count] > 0) {
    NSString *formattedOther = [NSString stringWithFormat:@"%@ %@<br />",sOtherTitle,[self arrayToString:m_oOtherArray]];
    [sHtmlBuf appendFormat:@"%@ ",formattedOther];
}

[m_oDataPresentView loadHTMLString:sHtmlBuf baseURL:nil];

(注:この問題が発生する前に、HTMLは通常のWebブラウザーでレンダリングできるため、HTMLは問題ではありません)

編集:初期化コードを追加しました:

//Create wcbbc panel
wcbbcPanel = [[WarrantsAndCbbc alloc] initWithFrame:CGRectMake(320, 0, 320, 230)];
[m_oMainContentScrollView addSubview:wcbbcPanel];

UIView初期化コード:

- (id)initWithFrame:(CGRect)frame {

    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code.
        CGRect oFrame = frame;
        CGPoint oPositionCoords = CGPointMake(0, 0);
        oFrame.Origin = oPositionCoords;

        m_oDataPresentView = [[UIWebView alloc] initWithFrame:oFrame];
        [m_oDataPresentView loadHTMLString:@"<html><body style=\"background-color: #000000; color: #FFFFFF; font-family: Helvetica; font-size: 10pt; width: 300px; Word-wrap: break-Word;\"></body></html>" baseURL:nil];
        m_oDataPresentView.delegate = self;

        [self addSubview:m_oDataPresentView];
    }
    return self;
}
19
futureelite7

少し探偵の仕事をした後、デリゲート関数でNOを返すことがわかりました

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

loadHTMLStringリクエストを拒否します。 YESを返すと問題が解決しました。

41
futureelite7

私は同じ問題を抱えていて、n00bだったので、DIDしないと問題が解決したことに驚いた

webview = [[UIWebView alloc]init];

代わりに、それはすでにコンセントとして配線されていたので、

[webView loadHTMLString:mystring baseURL:nil];
6
mvishnu

UIWebViewの初期化コードから、画面から外れる位置にwcbbcPanelを追加しているようです。代わりにこれを試してください:

wcbbcPanel = [[WarrantsAndCbbc alloc] initWithFrame:CGRectMake(0, 0, 320, 230)];
0
donkim