2010-09-13 12 views
5

Ich bin mir nicht sicher, wie diese Frage zu stellen, aber hier geht ...addSubview die hinzugefügt Ansicht des Rahmens zu modifizieren

ich eine PDF-Seite in eine Ansicht zu machen und es zu einem UIViewController hinzufügen. Funktioniert gut, bis auf einige PDF-Dateien.

Aus irgendeinem Grund durchläuft der Code für bestimmte PDF-Dateien einen anderen Pfad. Es passiert, wenn das PDF aus PowerPoint erstellt wird. Nach dem Aufruf von addSubview wird ein Pfad durchlaufen, der den Rahmen der PDF-Ansicht ändert. Ich habe einen Beobachter für PDFViewController.view.frame und die Spur geht:

0 -[PDFViewController observeValueForKeyPath:ofObject:change:context:] 
1 NSKVONotify 
2 -[NSKeyValueObservance observeValueForKeyPath:ofObject:change:context:] 
3 NSKVONotify 
4 -[NSObject(NSKeyValueObserverNotification) didChangeValueForKey:] 
5 _NSSetRectValueAndNotify 
6 -[UIViewController viewDidMoveToWindow:shouldAppearOrDisappear:] 
7 -[UIView(Internal) _didMoveFromWindow:toWindow:] 
8 -[UIView(Hierarchy) _postMovedFromSuperview:] 
9 -[UIView(Internal) _addSubview:positioned:relativeTo:] 
10 -[UIView(Hierarchy) addSubview:] 
11 (rest of trace is expected) 

Für die meisten PDF-Dateien, das funktioniert ok. Aber für einige wird der Rahmen der hinzugefügten Ansicht irgendwo in [UIViewController viewDidMoveToWindow:shouldAppearOrDisappear:] modifiziert. Die y-Koordinate des Ursprungs bewegt sich um 43 Pixel nach unten und die Höhe wird um etwa 20% verringert. Ich kann keine Informationen darüber finden, was in dieser Methode passiert, es scheint, dass es intern in UIViewController ist.

Hat jemand eine Idee, warum der Rahmen geändert wird? Zumindest ein Anstoß in die richtige Richtung?

Vielen Dank im Voraus.

EDIT:

Jetzt bin ich ziemlich sicher, dass es [UIViewController viewDidMoveToWindow:shouldAppearOrDisappear:] ist, dass es nach oben schraubt. Ich implementierte eine leere -viewDidMoveToWindow:(UIWindow *)shouldAppearOrDisappear:(BOOL)flag Methode in PDFViewController und der Fehler ging weg. Dies sieht jedoch nicht wie eine Lösung aus, sondern kann zu einer abgelehnten Anwendung führen. >. <

Wer hat irgendwelche Vorschläge/Kommentare?

Antwort

0

43px ist die Größe der Navigationsleiste. Haben Sie es?

+0

Ja, aber es ist ein extra 43px unter der Navigationsleiste. Ist die Höhe der Navigationsleiste nicht 44px statt 43px? Wie auch immer, die Lösung für dieses Problem finden Sie hier -> http://stackoverflow.com/questions/3708961/overriding-internal-uiviewcontroller-methods-because-an-internal-method-is-giving – Altealice

+0

Annahme der Antwort, um dies zu schließen . Aktuelle Lösung in http://stackoverflow.com/questions/3708961/overriding-internal-uiviewcontroller-methods-because-an-internal-method-is-giving. – Altealice

Verwandte Themen