5 Stimmen

IPhone 3.1 SDK: UIViewController-Kategorie betrifft ALLE ViewControllers

IPhone SDK Frage an Sie.

Ich habe eine UIViewController-Kategorie erstellt, um eine Ansicht nach oben zu verschieben, wenn UITextFields bearbeitet werden und die Tastatur erscheint, die die Felder blockiert. Ich habe den Code online gefunden und Sie iPhone-Gurus sind zweifellos damit vertraut. Die Schnittstelle sieht so aus:

@interface UIViewController (verschiebbar) 

      - (IBAction) textFieldDidBeginEditing:(UITextField *)textField;

      - (IBAction) textFieldDidEndEditing:(UITextField *)textField;

      - (void) animateTextField: (UITextField *)textField up:(BOOL)up;

@end

Mein Problem ist folgendes - jede meiner UIViewControllers wird von dieser Kategorie beeinflusst! Ich dachte, dass dies nur UIViewControllers beeinflussen würde, die die Kategorie wie folgt importieren:

 #import "UIViewController Shiftable.h"

Aber selbst UIViewControllers, die diese Kategorie nicht importieren, haben ihre Ansichten verschoben, wenn UITextFields bearbeitet werden, und natürlich müssen einige meiner Ansichten nicht verschoben werden, wenn die Tastatur erscheint, da die Tastatur die Felder nicht verdeckt.

Verstehe ich Kategorien falsch? Kann mir jemand etwas Licht auf diese Situation werfen?

Danke.

8voto

Vladimir Punkte 169002

Nein, so funktionieren Kategorien - wenn Sie einer Klasse einige Methoden hinzufügen, stehen all diese Änderungen während der Laufzeit für alle Instanzen dieser Klasse zur Verfügung.

-1voto

Yang Meyer Punkte 5139

Der wichtige Punkt ist, dass in der Datei, in der du #import "UIViewController Shiftable.h" hast, alle Instanzen von UIViewController die neuen Methoden haben werden. Wenn du deine Kategorie-Datei nicht importierst, werden keine deiner UIViewControllers sie haben.

Wenn du möchtest, dass einige View-Controller diese neuen/geänderten Methoden haben, aber andere nicht, erwäge, UIViewController zu subklassen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X