2010-05-25 51 views
5

iPhone SDK問題。iPhone 3.1 SDK:UIViewController類別正在影響所有ViewControllers

我創建了一個UIViewController類別,當UITextFields被編輯並且鍵盤出現時將視圖向上移動,從而阻止字段。我在網上找到了這些代碼,毫無疑問,你的iPhone大師們很熟悉它。界面看起來像這樣:

@interface UIViewController (Shiftable) 

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

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

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

@end 

我的問題是這個 - 我的每個UIViewControllers都受這個類別的影響!我以爲這隻會影響導入類別UIViewControllers如下:

#import "UIViewController Shiftable.h" 

但即使這樣,也不該類別進口UIViewControllers有自己的看法上移時UITextFields進行編輯,當然還有我的一些觀點並不需要當鍵盤出現時,由於鍵盤不隱藏字段而被移位。

我對類別的理解是否正確?任何人都可以對此有所瞭解嗎?

謝謝。

回答

8

不,這是類別的工作方式 - 如果您將某些方法添加到類中,則所有這些更改都將在運行時用於該類的所有實例。

-1

重要的一點是,在文件你在哪裏#import "UIViewController Shiftable.h",UIViewController的所有實例都會有新的方法。如果你不要導入你的類別文件,沒有你的UIViewControllers會。

如果您需要一些視圖控制器來擁有這些新的/已修改的方法,但其他視圖控制器沒有,請考慮繼承UIViewController。

+5

所有UIViewController實例都將響應自定義類別中添加的方法,無論您是否使用類別定義導入標題。導入標題只會影響有關這些方法的編譯器警告。 – Vladimir 2010-05-25 12:06:18

+0

剛從一年前我偶然發現了答案......哎呀! - 當然你絕對是對的! – 2011-07-19 15:14:57