2009-12-28 40 views
8

Greetings,Phát triển iPhone: Grabbing chọn/văn bản đánh dấu trên UIWebView

Xin vui lòng tư vấn về cách có thể tôi có thể nhận được các văn bản được lựa chọn trên UIWebView.

tôi tiếp tục tìm kiếm về cách đối phó với lựa chọn/đánh dấu văn bản và tìm thấy những điều sau đây:

Selection and Menu Management

Để sao chép hoặc cắt một cái gì đó trong một cái nhìn, rằng “cái gì đó” phải đã chọn. Nó có thể là một loạt văn bản, hình ảnh, URL , màu hoặc bất kỳ dữ liệu nào khác, bao gồm đại diện cho dữ liệu, bao gồm đối tượng tùy chỉnh. Để triển khai hành vi sao chép và dán trong chế độ xem tùy chỉnh của bạn, bạn phải tự mình quản lý lựa chọn đối tượng trong chế độ xem đó. Nếu người dùng chọn một đối tượng trong giao diện bởi làm một cử chỉ cảm ứng nhất định (ví Ví dụ, một nhấp đúp), bạn phải xử lý sự kiện đó, trong nội bộ ghi lại lựa chọn (và bỏ chọn bất kỳ lựa chọn trước) và có lẽ là trực quan cho biết lựa chọn mới trong chế độ xem . Nếu người dùng có thể chọn nhiều đối tượng trong chế độ xem của bạn cho các thao tác sao chép-dán, bạn phải thực hiện hành vi đa lựa chọn đó .

Và đó là nơi tôi bị lạc. "... ghi lại lựa chọn" - Tôi thậm chí không chắc chắn cách thể hiện lựa chọn cho phép ghi lại nó.

Mọi trợ giúp đều được đánh giá cao. ^^ Chúc mừng!

Kind regards, oonoo

+0

Đoạn đó dường như liên quan đến nhà phát triển chế độ xem tùy chỉnh. Bạn không viết UIWebView, vì vậy bạn có thể không cần phải lo lắng về việc dạy nó cách chọn văn bản. –

+0

Xin chào NSD cảm ơn vì đã trả lời. Bạn nói đúng Tôi không quan tâm về cách văn bản được đánh dấu/được chọn vì nó đã được hỗ trợ, nhưng tôi đã tự hỏi làm thế nào, khi người dùng làm nổi bật một văn bản, tôi có thể truy xuất văn bản cụ thể đó. – oonoo

+0

@ hi, Bạn có acchive nó? tôi cũng làm việc cho cùng .... – Warrior

Trả lời

17

Bạn có thể sử dụng stringByEvaulatingJavaScriptFromString để có được những văn bản đang được chọn trong một 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

tôi không thể triển khai mã này, khi nào và cách gọi phương thức này. bạn có thể cung cấp bất kỳ mã mẫu nào không? – Warrior

+0

NSString * selection = [self.webView stringByEvaluatingJavaScriptFromString: @ "window.getSelection(). ToString()"]; Mã hoàn hảo. Cám ơn vì cái này. – Muzammil

+0

@Kris Markel Tôi đang hiển thị tệp PDF trên UIWebView và chọn thử nghiệm nhưng trên hành động menuItem Tôi không nhận được văn bản được chọn ở đây là mã của tôi: ' UIMenuItem * customMenuItem1 = [[UIMenuItem alloc] initWithTitle: @" Custom 1 "action : @selector (customAction1 :)]; - (void) customAction1: (id) người gửi { NSLog (@ "Chuỗi đã chọn:% @", [self SelectedStringGet]); } - (NSString *) SelectedStringGet { NSString * selection = [self.WV_Pdf stringByEvaluatingJavaScriptFromString: @ "window.getSelection(). ToString()"]; lựa chọn trả lại; ' –

2

Hãy xem sử dụng window.getSelection() trong JavaScript. Nó sẽ cho phép bạn có được lựa chọn văn bản hiện tại mà bạn có thể lưu trữ trong một biến toàn cầu và truy cập biến đó thông qua phương thức stringByEvaluatingJavaScriptFromString trên UIWebView. Thật không may, tôi không biết một cách trong JavaScript iOS để xác định khi lựa chọn văn bản đã thay đổi vì vậy thay vì sử dụng một khoảng thời gian để liên tục kiểm tra điều đó. Tôi đã thực sự làm tất cả điều này vì vậy tôi biết nó có thể làm việc. Về lưu trữ các phạm vi lựa chọn văn bản để sử dụng sau này cũng như áp dụng các kiểu tôi sẽ xem xét một thư viện JavaScript có tên là rangy. Tôi thấy nó cực kỳ hữu ích trong việc tạo plugin jQuery nổi bật (hoạt động trên cả máy tính để bàn và trên iOS - không dành cho Android).

+0

đây chính xác là những gì tôi đang tìm kiếm, cảm ơn! – markshiz

Các vấn đề liên quan