Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   iOS ShowModal komisches Verhalten (https://www.delphipraxis.net/213912-showmodal-komisches-verhalten.html)

Gruber_Hans_12345 18. Okt 2023 07:41

ShowModal komisches Verhalten
 
Hallo eine Frage verwendet wer von euch das ShohModal auf iOS Geräten?

Im Simulator und einem älteren iPAD funktioniert das ohne Probleme.
Aber auf einem neuen iPhone verhält es sich komisch - das Fenster, das per ShowModal kommen sollte, ist oft nicht sichtbar, da muss man dann einiges rumklicken aus App raus wieder rein, dann sieht man es.
Und auch beim verlassen des Fensters bleibt es oft einfach stehen, und man sieht das Hauptfenster nicht - bis man einiges herumspielt.

Wer eine Idee wo und wie ich da weiterkomme?

Olli73 18. Okt 2023 07:46

AW: ShowModal komisches Verhalten
 
Du musst eine Callbackfunktion angeben und dort den Code für die Verarbeitung nach dem Dialog angeben.

Gruber_Hans_12345 18. Okt 2023 08:01

AW: ShowModal komisches Verhalten
 
das hätte ich eigentlich aber ist trotzdem ein sehr komisches Verhalten

Unten ist der Code zum anzeigen des SettingsForm

Man sieht auf dem Handy (iPhone 14 Pro) das er die Kamera zwar ausschaltet (Das grüne Licht ist weg) das Bild bliebt dann stehen (da ja CameraComponent.Active := False) steht aber das Setting Form wird nicht angezeigt.
Dann gehe ich einfach normal raus, wieder rein, und ich sehe das Settings form.
In 1 von 10 Fällen funktioniert es das es sofort angezeigt wird.

Beim beenden des Settings Form ist es blöder, da wird die Kamera nicht mehr angezeigt, und es dauert länger (mehrere Versuche) bis ich den normalen Screen wieder sehe

Delphi-Quellcode:
procedure TCameraForm.actShowSettingsExecute(Sender: TObject);
var
    SavedCameraActive: Boolean;
begin
    SavedCameraActive      := CameraComponent.Active;
    SettingsForm.Camera    := CameraComponent;
    CameraComponent.Active := False;
    SettingsForm.lbiFormat.ItemData.Detail := fImageFormat;

    SettingsForm.ShowModal(procedure (AResult: TModalResult)
    begin
        CameraComponent.Active := SavedCameraActive;
        fImageFormat           := SettingsForm.lbiFormat.ItemData.Detail;
    end);
end;

Gruber_Hans_12345 18. Okt 2023 10:18

AW: ShowModal komisches Verhalten
 
Was da auch komisch ist.
Die App ist im Fullscreen modus (keine softKEys und die Titelleiste ist auch nicht da)
Wenn ich in die Settings gehe dann ist es immer noch FullScreen.
Wenn ich das Modale Form verlasse dann schaltet er mir den FullScreen mode aus

himitsu 18. Okt 2023 10:29

AW: ShowModal komisches Verhalten
 
Modal gibt es in den mobilen Platformen "eigentlich" nicht. (iOS/Android)
Laut den Herstellern, dieser OS, ist es auch verboten, den Hauptthread zu blockieren, was somit einer modalen/wartenden Arbeitsweise wiederspricht.

Fenster dürfen offiziell nur asynchron aufgerufen werden, also der Aufruf kehrt sofort zurück und Rückgaben werden in den CallBack-Events ausgewertet.
Bei allem Anderem bist'e selbst Schuld, falls es Probleme gibt.

Gruber_Hans_12345 18. Okt 2023 11:03

AW: ShowModal komisches Verhalten
 
Zitat:

Zitat von himitsu (Beitrag 1528305)
Modal gibt es in den mobilen Platformen "eigentlich" nicht. (iOS/Android)
Laut den Herstellern, dieser OS, ist es auch verboten, den Hauptthread zu blockieren, was somit einer modalen/wartenden Arbeitsweise wiederspricht.

Fenster dürfen offiziell nur asynchron aufgerufen werden, also der Aufruf kehrt sofort zurück und Rückgaben werden in den CallBack-Events ausgewertet.
Bei allem Anderem bist'e selbst Schuld, falls es Probleme gibt.

Ja da hast du recht das es kein richtiges Modales Fenster ist, Aber die Funktion in Delphi heisst nun mal ja so
"ShowModal" und der Hauptthread wird ja nicht blockiert sondern dann asynchron die procedure aufgerufen wenn der Settings Dialog wieder geschlossen wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz