2009-12-28 42 views
8

問候,iPhone發展:UIWebView的拼搶選擇/高亮文本

請我怎麼可能可以得到的UIWebView選定的文本好心建議。

我接着就如何處理與選定的搜索/高亮文本,發現如下:

Selection and Menu Management

在視圖中複製或剪切的東西, 那「東西」一定要選擇。它可以是一系列文本,圖像, URL,顏色或任何其他 表示的數據,包括 自定義對象。要在您的自定義 視圖中實施 複製粘貼行爲,您必須自己管理該視圖中對象的選擇 。如果 用戶通過 使一定的觸摸手勢來選擇在視圖中的對象( 例如,雙敲擊),則必須處理 那種情況下,內部記錄 選擇(和取消選擇任何先前 選擇),並且可能在視覺上 指示 視圖中的新選擇。如果用戶有可能爲 在您的視圖 中選擇多個對象進行復制剪切粘貼操作,則您的 必須實現該多選 行爲。

這就是我迷路的地方。 「...記錄選擇」 - 我甚至不知道如何表示選擇,更不用說記錄它。

任何幫助,非常感謝。 ^^乾杯!

親切的問候, oonoo

+0

該段似乎與自定義視圖的開發者有關。您沒有編寫UIWebView,因此您可能不需要擔心如何選擇文本。 – 2009-12-28 11:17:29

+0

嗨NSD謝謝你的迴應。你是對的我不關心文本如何被突出顯示/選擇,因爲它已經被支持,但我想知道,當用戶突出顯示文本時,我可以檢索特定的文本。 – oonoo 2009-12-28 11:34:02

+0

@嗨,你有沒有達到它?我也爲同樣的工作.... – Warrior 2010-09-17 06:12:22

回答

17

您可以使用stringByEvaulatingJavaScriptFromString獲得在一個UIWebView當前選定的文本。

NSString *selection = [self.webView stringByEvaluatingJavaScriptFromString:@"window.getSelection().toString()"]; 
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Selected Text" message:selection delegate:nil cancelButtonTitle:@"Okay" otherButtonTitles:nil]; 
[alert show]; 
[alert release], alert = nil; 
+0

我無法實現此代碼,何時以及如何調用此方法。你能提供任何示例代碼嗎? – Warrior 2010-09-17 06:11:05

+0

NSString * selection = [self.webView stringByEvaluatingJavaScriptFromString:@「window.getSelection()。toString()」]; 完美的代碼。謝謝你。 – Muzammil 2012-09-25 09:35:26

+0

@Kris Markel我在UIWebView上顯示PDF並選擇測試,但是在menuItem動作中我沒有得到這裏選擇的文本是我的代碼: ' UIMenuItem * customMenuItem1 = [[UIMenuItem alloc] initWithTitle:@「Custom 1」action :@selector(customAction1 :)]; (void)customAction1:(id)sender {@「Selected String:%@」,[self SelectedStringGet]);} - (NSString *)SelectedStringGet {N0String * selection = [self.WV_Pdf stringByEvaluatingJavaScriptFromString:@「window.getSelection()。toString()」]; 返回選擇; ' – 2014-03-26 07:03:35

2

看看在JavaScript中使用window.getSelection()。它將允許您獲取當前的文本選擇,然後您可以將其存儲在全局變量中,並通過UIWebView上的stringByEvaluatingJavaScriptFromString方法訪問該變量。不幸的是,我不知道iOS JavaScript中的一種方式來確定文本選擇何時發生變化,而是使用間隔來持續檢查。我已經完成了所有這些,所以我知道它可以工作。在存儲文本選擇範圍以供日後使用以及應用樣式方面,我會考慮一個名爲rangy的JavaScript庫。我發現它在創建突出顯示的jQuery插件方面非常有用(可以在桌面和iOS上使用,但不適用於Android)。

+0

這正是我所期待的,謝謝! – markshiz 2011-09-22 18:56:00