8

我有一个具有三个级别的 UIViewControllers 的向下钻取导航应用程序。在每个视图控制器中,我都有一个 UITextField,我试图将 UIKeyboard 子类化为每个视图控制器。我的问题是在哪里“设置”通知和“取消设置”它们。

我有通知:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];

所以最好在 viewDidLoad 事件中设置它们?还是 viewWillAppear 事件?

同样对于[[NSNotificationCenter defaultCenter] removeObserver:self];

我不想在keyboardWillShow:向下钻取时调用多个事件。

非常感谢,布雷特

4

2 回答 2

7

我建议你把这些放在initanddealloc方法中,因为每次视图出现或消失时都会调用viewWillAppearand ,这对于注册/注销通知是不必要的。viewWillDisappear

于 2010-07-18T02:49:40.227 回答
5

尽管如此,我还是建议您注册为观察者viewWillAppear并取消注册,viewWillDisappear因为viewDidUnload仅在必须释放内存时才调用,这意味着viewDidLoad被调用的频率要高得多viewDidUnload,然后您可能会遇到多次收到相同通知的问题。

于 2012-01-30T12:49:52.117 回答