Die Implementierung eines WebView Datenbank Quote Delegat

stimmen
3

Wie implementiere ich diese Methode (siehe unten)? Ich bin neu in Objective-C und ich bin einfach nicht richtig hinzubekommen.

Von: http://lists.apple.com/archives/Webkitsdk-dev/2008/Apr/msg00027.html

Mit dem Standarddatenbank hat eine Quote von 0; Diese Quote erhöht werden muss, bevor eine Datenbank auf der Festplatte gespeichert werden.

WebKit - Clients sollten die WebUIDelegate Methode implementieren - webView:frame:exceededDatabaseQuotaForSecurityOrigin:database:und erhöhen die Quote wie gewünscht , wenn diese Methode aufgerufen wird. Dieses Verfahren ist in WebUIDelegatePrivate.h definiert. Es war zu spät in dem vorherigen Release - Zyklus hinzugefügt , um es in einen nicht-privaten Header zu machen. Es würde sich lohnen , einen Fehler über das Verschieben von diesem Anruf WebUIDelegate.h Datei so , dass sie Teil der offiziellen API ist.

John

Veröffentlicht am 09/12/2008 um 19:52
quelle vom benutzer
In anderen Sprachen...                            


4 antworten

stimmen
1

Haben Sie etwas Hilfe von einer Diskussionsrunde:

In ihren öffentlichen SVN Es scheint eine Implementierung dieser Methode in WebKitTools WebKit enthalten zu sein. (Die Klasse ist UIDelegate genannt). http://trac.webkit.org/browser/trunk/WebKitTools/DumpRenderTree/mac/U ...

Ich gehe davon aus Sie einen Delegaten für die WebKit Ansicht erstellt haben. In dieser Delegate-Klasse, eine Methode mit der Signatur erstellen:

- (void)webView:(WebView *)sender frame:(WebFrame *)frame
exceededDatabaseQuotaForSecurityOrigin:(WebSecurityOrigin *)origin
database:(NSString *)databaseIdentifier;

Sie können sich wahrscheinlich eine modifizierte Version von UIDelegate Implementierung verwenden:

- (void)webView:(WebView *)sender frame:(WebFrame *)frame
exceededDatabaseQuotaForSecurityOrigin:(WebSecurityOrigin *)origin
database:(NSString *)databaseIdentifier
{
    static const unsigned long long defaultQuota = 5 * 1024 * 1024;
    [origin setQuota:defaultQuota];
}

Ich habe nicht versucht, so YMMV.

Jon

Beantwortet am 09/12/2008 um 22:12
quelle vom benutzer

stimmen
3

Egal, in welcher Klasse Sie haben als Delegierter definiert für Ihre WebView Sie diese Methode implementieren müssen, so etwas wie folgt aus:

- (void)webView:(WebView *)sender frame:(WebFrame *)frame exceededDatabaseQuotaForSecurityOrigin:(WebSecurityOrigin *)origin database:(NSString *)databaseIdentifier {
    unsigned long long newQuotaBytes = 10 * 1024 * 1024;
    [origin setQuota:newQuotaBytes];

    // origin also responds to -usage method to return current size for all databases in this origin
}
Beantwortet am 09/12/2008 um 22:21
quelle vom benutzer

stimmen
0

Hier ist die endgültige Antwort.

Ich wurde mit der Minibrowser Beispielanwendung.

In MyDocument.m habe ich diese Funktion:

- (void)webView:(WebView *)sender frame:(WebFrame *)frame exceededDatabaseQuotaForSecurityOrigin:(id)origin database:(NSString *)databaseIdentifier
{
    static const unsigned long long defaultQuota = 5 * 1024 * 1024;
    if ([origin respondsToSelector: @selector(setQuota:)]) {
        [origin setQuota: defaultQuota];
    } else { 
        NSLog(@"could not increase quota for %@", defaultQuota); 
    }
} 
Beantwortet am 10/12/2008 um 07:11
quelle vom benutzer

stimmen
0

Dieser arbeitete für mich: https://stackoverflow.com/a/8975014/146099 - es ist eine leichte Abwandlung Jeffs Antwort.

Beantwortet am 23/01/2012 um 17:34
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more