2012-02-04 31 views
16

Trong ứng dụng iOS tôi đang phát triển, tôi hiển thị UIWebView để cho phép người dùng nâng cấp tài khoản của họ. Trang chứa các liên kết để hiển thị thông tin người dùng khác, nhưng bạn giữ ngón tay của bạn trên liên kết, một menu như thế này sẽ bật lên: enter image description hereNgăn chặn iOS Webkit Nhấn và giữ liên kết

Như bạn thấy, nó cho thấy URL của trang và hành động sẽ được thực hiện, mà tôi không muốn người dùng nhìn thấy, vì tôi không muốn họ có thể sao chép bất cứ thứ gì vì tôi đã tắt trình đơn "Sao chép/Cắt/Dán". Làm thế nào tôi cũng sẽ vô hiệu hóa menu này?

Cảm ơn mọi con trỏ.

+0

Có lý do chính đáng nào khiến bạn muốn ngăn người dùng thực hiện việc này không? Dường như tôi không làm phiền sẽ dễ dàng hơn. – millimoose

Trả lời

32

Tôi nghĩ bạn có thể tắt cửa sổ bật lên đó bằng cách đặt the CSS -webkit-touch-callout property thành none trên liên kết. Bạn sẽ làm điều này bằng cách chỉnh sửa tệp HTML hoặc CSS bạn đang tải, không sử dụng Objective-C.

16

Những gì bạn muốn làm, như Rob đã nêu, là tắt trình đơn ngữ cảnh mặc định của UIWebView. Bạn có thể đạt được điều đó bằng cách thêm dòng sau vào webViewDidFinishLoad:

[webView stringByEvaluatingJavaScriptFromString:@"document.body.style.webkitTouchCallout='none';"]; 
13

Nếu bạn muốn cả hai vô hiệu hóa popup người dùng lựa chọn văn bản trên TOÀN BỘ TRANG HTML của bạn, sử dụng này trên BODY của trang web của bạn hoặc css toàn cầu.

body { 
-webkit-touch-callout: none; 
-webkit-user-select: none; 
-khtml-user-select: none; 
-moz-user-select: none; 
-ms-user-select: none; 
user-select: none; 
} 
+0

Tác phẩm này. Nhưng nếu bạn lo lắng về việc người dùng thay đổi CSS của bạn thì hãy sử dụng phương pháp lập trình được đề xuất bởi [câu trả lời này] (http://stackoverflow.com/a/15538022/642706). Và tìm kiếm các câu hỏi và câu trả lời có liên quan/trùng lặp. –

+3

Bạn có thể sử dụng '* {' thay vì 'body {' để bao quát mọi thứ. –

+2

Nếu bạn muốn đầu vào và văn bản của bạn hoạt động, bạn cần sử dụng '*: not (input, textarea) {}' –

0

Không cần phải báo cho trình duyệt biết bạn có liên kết và sau đó buộc nó không hoạt động như một liên kết!

Chỉ cần xóa hoàn toàn href="void(0)"!

Các thuộc tính ontouchend hoặc onclick của bạn sẽ vẫn hoạt động.


Nếu bạn muốn bình thường màu xanh/gạch chân nhìn lại, bạn có thể thêm css này:

a .originalLink { color: blue; text-decoration: underline; cursor: pointer; } 

này giúp tiết kiệm rất nhiều chu kỳ CPU, đặc biệt là khi có hàng trăm liên kết trong trang trong khi người dùng đang cuộn trơn tru.

Bạn cũng có thể mở rộng này để URL thường xuyên bằng cách sử dụng này:

<a class="originalLink" onclick="location.href='http://mylink';">Real URL Link</a> 

Tất nhiên SEO của bạn là ra ngoài cửa sổ, nhưng đối với một điện thoại di động tình hình ứng dụng web cụ này có thể rất quan trọng.

Mã hóa vui vẻ!

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