Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
UIKeyboard通知的最佳实践-iPhone SDK_Iphone_Objective C_Uikeyboard - Fatal编程技术网

UIKeyboard通知的最佳实践-iPhone SDK

UIKeyboard通知的最佳实践-iPhone SDK,iphone,objective-c,uikeyboard,Iphone,Objective C,Uikeyboard,我有一个具有三级UIViewController的深入导航应用程序。 在每个视图控制器中,我都有一个UIExtField,在这里我试图为每个视图控制器的UIKeyboard子类化。我的问题是在哪里“设置”通知和“取消设置”通知 我收到通知: [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification

我有一个具有三级UIViewController的深入导航应用程序。 在每个视图控制器中,我都有一个UIExtField,在这里我试图为每个视图控制器的UIKeyboard子类化。我的问题是在哪里“设置”通知和“取消设置”通知

我收到通知:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
所以最好在viewDidLoad事件中设置它们?或者视图将出现在事件中

对于
[[NSNotificationCenter defaultCenter]removeObserver:self]也是如此

我不希望在向下钻取时调用多个
键盘将显示:
事件

非常感谢,,
Brett

我建议您将它们放在
init
dealloc
方法中,因为每次视图出现或消失时,
视图将出现
视图将消失
都将被调用,这对于注册/取消注册通知是不必要的。

不过,我建议您在
视图中注册为观察者将出现
,而在
视图中注销将消失
,因为
viewDidUnload
仅在必须释放内存时才被调用,这意味着调用
viewDidLoad
的频率比调用
viewDidUnload
的频率要高得多,然后您可能会遇到多次收到相同通知的问题。

viewDidUnload:在iOS 6.0中已弃用。在内存不足的情况下,视图不再被清除,因此永远不会调用此方法。在init中注册,在deallock中取消注册取决于您希望何时实现什么