Es muss etwas Grundlegendes geben, dass ich hier vermisse. Ich habe ein UIScrollView geöffnet, das von einem Kunden UIScrollViewController (genannt DataController) gesteuert wird. Zu einem bestimmten Zeitpunkt wird eine Eingabe vom Benutzer benötigt, daher öffne ich einen modalen UIViewController vom DataController:
%Vor%Sobald der Benutzer mit der modalen Ansicht fertig ist, wird er erneut verworfen. Dies geschieht auch vom DataController:
%Vor%Das alles funktioniert gut. Wenn die modale Ansicht jedoch nicht mehr vorhanden ist, stellt sich heraus, dass die zugrundeliegende UIScrollView auf die Vollbildgröße skaliert wird und zur Position (0,0) gescrollt wird. Dies ist sogar bei einer einfachen Modalansicht der Fall, die nichts anderes macht, als entlassen zu werden. Offensichtlich möchte ich, dass UIScrollView im selben Zustand und derselben Größe bleibt, wie es vor dem Modal View war.
Irgendwelche Ideen, was ich falsch mache?
Ich habe den Stack-Trace überprüft, wenn der UIScrollView-Frame gesetzt ist (durch einen Break-Point in setFrame: eines benutzerdefinierten UIScrollView), und es scheint, dass er von aufgerufen wird:
%Vor%, das über den Aufruf dismissModalViewControllerAnimated aufgerufen wird.
Das ist völlig normal für den Übergang vom Modal zurück zu Ihrer Ansicht. Dies ist die Animation etc, versuchen Sie modal mit Animation, wenn Sie denken, dass könnte einen Unterschied machen.
Sehen Sie sich Ihre viewWillAppear
, WillDisappear
, DidAppear...
an
Sogar die Load
und Unload
, falls angemessen, obwohl unwahrscheinlich, dass diese für Ihren Trivial-Test mit nichts im Modal aufgerufen werden.
Versuchen Sie, diese Methoden zu protokollieren, um zu sehen, welche aufgerufen wird.
Sie sagen auch, dass es keinen benutzerdefinierten Code in diesen Methoden gibt, oder Ihr Controller überschreibt sie überhaupt nicht? Könnte einen Unterschied machen.
Tags und Links iphone ios uiscrollview modal-dialog