2009-08-09 16 views
13

Ho una visualizzazione Web nella mia applicazione di cacao (macosx non iphone), visualizza alcuni javascript per l'utente ma non voglio che l'utente sia in grado di selezionare alcun testo o clic destro e selezionare l'opzione di ricarica.Cocoa webView - Disabilita tutte le interazioni

C'è un modo semplice per disabilitare tutte le interazioni con la visualizzazione Web?

So che su iPhone è facile disabilitare l'interazione dell'utente, ma non ho mai avuto bisogno di farlo sul desktop prima e non riesco a trovare una soluzione.

risposta

38

Set sia di editing e di interfaccia utente delegazioni:

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

quindi aggiungere i metodi di cui sopra per disabilitare la selezione del testo e menu contestuale.

- (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

La ringrazio molto – Craig

+4

Vecchio, ma ... per amore della buona forma, shouldn' t ritorneremo nil nel primo metodo, invece di NO? – SirRatty

+0

Ho modificato la risposta per restituire 'nil' nel primo metodo. – Chetan

3

tramite la delegazione interfaccia utente potrebbe essere utile anche per disattivare le operazioni di drag and drop, aggiungere

- (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

Impressionante, questo interrompe il drag-n-drop degli URL sulla webview. – theGecko

Problemi correlati