WebView Вставить / Изменить содержимое динамически - PullRequest
2 голосов
/ 15 марта 2011

В моем приложении я использую WebView для отображения содержимого. Теперь возможно динамическое изменение содержимого, требование примерно такое:

я получу информацию из сети и в зависимости от них янужно установить стиль / шрифт / атрибут или, возможно, мне нужно добавить новый текст, когда подключенное устройство не отвечает,

Пока я использую следующий код,

-(void)modifyString:(NSString *)string{
   [sourceString stringByAppendingString:errorString :string] 
}

   -(void)reloadPage{

     [[pWebView mainFrame] loadHTMLString:htmlString baseURL:nil];
    }

IНе думаю, что это правильный способ его реализации, я пытаюсь использовать

[pWebView replaceSelectionWithMarkupString:@"<html><body><p>Hi there </p></br></body></html>”];

, но ничего не отображается, потому что я не выбрал и хочу выбрать свой вопрос: Как я могу установить выбор?

С уважением

Рохан

1 Ответ

10 голосов
/ 19 марта 2011

Не бери в голову Решил это так
В методе AwakeFromNib добавлен следующий код,

-(void)awakeFromNib{

    NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"about:blank"]];

    //URL Requst Object
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];

    //Load the request in the UIWebView.
    [[pWebView mainFrame ]loadRequest:requestObj];
    [pWebView setEditable:YES];
    [pWebView setNeedsDisplay:YES];

}

и добавил эту функцию для добавления элемента body,

-(void)appendTagToBody:(NSString *)tagName InnerHTML:(NSString *)innerHTML
{
    // Gets a list of all <body></body> nodes.
    DOMNodeList *bodyNodeList = [[[pWebView mainFrame] DOMDocument] getElementsByTagName:@"body"];

    // There should be just one in valid HTML, so get the first DOMElement.
    DOMHTMLElement *bodyNode = (DOMHTMLElement *) [bodyNodeList item:0];

    // Create a new element, with a tag name.
    DOMHTMLElement *newNode = (DOMHTMLElement *) [[[pWebView mainFrame] DOMDocument] createElement:tagName];

    // Add the innerHTML for the new element.
    [newNode setInnerHTML:innerHTML];

    // Add the new element to the bodyNode as the last child.
    [bodyNode appendChild:newNode];
}

и всякий раз, когда требуется изменить содержимое,

-(void)appendString:(NSString *)pString{
    [self appendTagToBody:@"div" InnerHTML:@"<div><p> Hi there </p></div>"];
    [self setNeedsDisplay:YES];
}
...