2009-08-09 39 views
13

Tôi có một webView trong ứng dụng ca cao của tôi (macosx không iphone), nó hiển thị một số javascript cho người dùng nhưng tôi không muốn người dùng có thể chọn bất kỳ văn bản hoặc nhấp chuột phải và chọn tùy chọn tải lại.Cocoa webView - Vô hiệu hóa tất cả tương tác

Có cách đơn giản để vô hiệu hóa tất cả tương tác với webView không?

Tôi biết trên iPhone dễ dàng vô hiệu hóa tương tác người dùng nhưng tôi chưa bao giờ cần làm điều này trên màn hình trước và không thể tìm thấy giải pháp.

Trả lời

38

Set cả chỉnh sửa và UI đoàn:

[view setUIDelegate:self]; 
[view setEditingDelegate:self]; 

Sau đó thêm các phương pháp trên để vô hiệu hóa lựa chọn văn bản và menu ngữ cảnh.

- (NSArray *)webView:(WebView *)sender contextMenuItemsForElement:(NSDictionary *)element 
    defaultMenuItems:(NSArray *)defaultMenuItems 
{ 
    // disable right-click context menu 
    return nil; 
} 

- (BOOL)webView:(WebView *)webView shouldChangeSelectedDOMRange:(DOMRange *)currentRange 
    toDOMRange:(DOMRange *)proposedRange 
    affinity:(NSSelectionAffinity)selectionAffinity 
    stillSelecting:(BOOL)flag 
{ 
    // disable text selection 
    return NO; 
} 
+1

Thank you very much – Craig

+4

Cũ, nhưng ... vì lợi ích của hình thức tốt, shouldn' t chúng ta trở về nil trong phương pháp đầu tiên, thay vì KHÔNG? – SirRatty

+0

Tôi đã chỉnh sửa câu trả lời để trả về 'nil' trong phương thức đầu tiên. – Chetan

3

qua đoàn UI nó có thể có ích cũng để vô hiệu hóa các hoạt động kéo và thả, thêm

- (NSUInteger)webView:(WebView *)sender dragSourceActionMaskForPoint:(NSPoint)point 
{ 
    return WebDragSourceActionNone; // Disable any WebView content drag 
} 

- (NSUInteger)webView:(WebView *)sender dragDestinationActionMaskForDraggingInfo:(id <NSDraggingInfo>)draggingInfo 
{ 
    return WebDragDestinationActionNone; // Disable any WebView content drop 
} 
+0

Tuyệt vời, thao tác này sẽ dừng kéo thả URL vào màn hình web. – theGecko

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