Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iPhone 3.1 SDK: UIViewController category is affecting ALL ViewControllers

iPhone SDK question for you.

I've created a UIViewController category to shift a view up when UITextFields are being edited and the keyboard appears, blocking the fields. I found the code online and no doubt you iPhone gurus are familiar with it. The interface looks like this:

@interface UIViewController (Shiftable) 

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

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

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

@end

My problem is this-- every one of my UIViewControllers is affected by this category! I thought this would only affect UIViewControllers that import the category as follows:

 #import "UIViewController Shiftable.h"

But even UIViewControllers that do not import this category have their views shifted up when UITextFields are edited, and of course some of my views do not need to be shifted when the keyboard appears as the keyboard does not hide the fields.

Is my understanding of categories incorrect? Can anyone shed any light on this?

Thanks.

like image 375
Diego Garcia Avatar asked May 25 '10 11:05

Diego Garcia


1 Answers

No, that's the way categories work - if you add some methods to a class then all those changes will be available for all instances of that class during runtime.

like image 55
Vladimir Avatar answered Sep 23 '22 02:09

Vladimir