2009-08-09 18 views
13

Mam webView w mojej aplikacji kakao (macosx nie iphone), wyświetla trochę javascript dla użytkownika, ale nie chcę, aby użytkownik mógł wybrać dowolny tekst lub kliknąć prawym przyciskiem myszy i wybierz opcję przeładowania.WebView Cocoa - Wyłącz wszystkie interakcje

Czy istnieje prosty sposób na wyłączenie wszystkich interakcji z WebView?

Wiem, że na iPhonie łatwo można wyłączyć interakcję użytkownika, ale nigdy wcześniej nie musiałem tego robić na pulpicie i nie mogę znaleźć rozwiązania.

Odpowiedz

38

Ustaw obie delegacje edycji i interfejsu użytkownika:

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

Następnie dodać metod powyżej, aby wyłączyć zaznaczenie tekstu i menu kontekstowe.

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

Dziękuję bardzo – Craig

+4

Stary, ale ... dla zachowania dobrej kondycji, powinnaś t zwracamy zero w pierwszej metodzie, zamiast NO? – SirRatty

+0

Edytowałem odpowiedź, aby zwrócić 'nil' w pierwszej metodzie. – Chetan

3

poprzez delegację UI może to być przydatne również wyłączyć operacje przeciągnij i upuść, dodać

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

Niesamowite, to powstrzymuje przeciąganie i upuszczanie adresów URL na widok WWW. – theGecko

Powiązane problemy