2010-12-31 14 views
0

WebView内の特定のテキストセグメントを強調表示する必要があります。これまで、私は[webView stringByEvaluatingJavaScriptFromString:jscript]を使用してJavaScriptをwebviewに挿入することでこれを行ってきました。 javascriptは、背景色を黄色に変更するテキストにタグを追加します。これは通常動作しますが、タグが挿入されたときにhtmlが破損することがあります。むしろWebViewで - (void)changeAttributes:(id)senderメソッドを使用します。これは、理解しているように、基になるHTMLを壊さない方法でスタイルを適用します。これを行うには、最初にWebViewでプログラムでテキスト属性を変更するにはどうすればよいですか?

[webView searchFor:aString direction:YES caseSensitive:NO wrap:YES]; 

を選択してください。 、黄色に選択したテキストの背景色を変更する必要があり

- (NSDictionary *)convertAttributes:(NSDictionary *)attributes { 
    NSMutableDictionary *newAttrs = [[NSMutableDictionary alloc] initWithDictionary:attributes]; 
    NSColor *background = [NSColor yellowColor]; 
    [newAttrs setValue:background forKey:NSBackgroundColorAttributeName]; 
    return newAttrs; 

}

:それから私は私が私のWebViewのインスタンスにこのメッセージを送信すると、それはこのメソッドを呼び出します

[webView changeAttributes:self]; 

を呼び出しますしかしそれはしません。標準のCocoaテキスト属性はWebviewに適用されますか?このメソッドは、この目的のために使用することを意図していますか、または私はjavascriptに戻る必要がありますか?

答えて

0

これらの属性はNSFontsのものです。 this documentに記載されているように、事象のシーケンスは、通常、次の通りである。

  1. [text/webView changeAttributes:obj]が実行される。通常はobjによって行われます。
  2. text/webView[obj convertAttributes:...]を使用してobjにフォント属性を渡します。
  3. objは、必要に応じて属性を返します。
  4. text/webViewは、それに応じてフォント属性を設定します。

とにかく私はこのアプローチをお勧めしません。私はあなたがOS Xで、iOSではないと仮定します。次に、WebFrameDOMDocumentを使用してDOM要素を取得し、スタイルを直接設定することをお勧めします。

+0

DOMを使ってこれを行うのが良いですが、私はより良いjavascriptソリューションを見つけました:document.designMode = \ "on \"; document.execCommand(\ "backcolor \"、false、\ " "yellow \"); document.designMode = \ "off \"; –

関連する問題