5 Stimmen

iPhone 3.1 SDK: UIViewController-Kategorie wirkt sich auf ALLE ViewController aus

IPhone SDK Frage für Sie.

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

@interface UIViewController (Shiftable) 

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

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

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

@end

Mein Problem ist dies-- jeder meiner UIViewControllers ist von dieser Kategorie betroffen! Ich dachte, dies würde nur UIViewController betreffen, die die Kategorie wie folgt importieren:

 #import "UIViewController Shiftable.h"

Aber auch UIViewController, die diese Kategorie nicht importieren, haben ihre Ansichten nach oben 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 ausblendet.

Ist mein Verständnis von Kategorien falsch? Kann jemand etwas Licht in diese Angelegenheit bringen?

Gracias.

8voto

Vladimir Punkte 169002

Nein, das ist die Art und Weise, wie Kategorien funktionieren - wenn man einer Klasse einige Methoden hinzufügt, dann sind all diese Änderungen zur Laufzeit für alle Instanzen dieser Klasse verfügbar.

-1voto

Yang Meyer Punkte 5139

Der wichtige Punkt ist, dass in der Datei wo Sie #import "UIViewController Shiftable.h" werden alle Instanzen von UIViewController die neuen Methoden haben. Wenn Sie nicht importieren Sie Ihre Kategoriedatei, keine Ihrer UIViewController wird.

Wenn einige Viewcontroller über diese neuen/geänderten Methoden verfügen müssen, andere Viewcontroller jedoch nicht, sollten Sie eine Unterklassifizierung von UIViewController in Betracht ziehen.

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