UIKeyboard通知的最佳实践 - iPhone SDK

Bre*_*ett 8 iphone objective-c uikeyboard

我有一个具有三级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];
Run Code Online (Sandbox Code Playgroud)

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

同样如此 [[NSNotificationCenter defaultCenter] removeObserver:self];

我不希望在keyboardWillShow:向下钻取时调用多个事件.

非常感谢,布雷特

Jac*_*kin 7

我建议你把这些在initdealloc方法,因为viewWillAppearviewWillDisappear将被称为每次视图出现或消失的时间,这是不必要的登记/注销的通知.


drc*_*rct 5

我建议你注册为观察者viewWillAppear并注销,viewWillDisappear因为viewDidUnload只有当内存必须被释放时才被调用,这意味着viewDidLoad被调用的次数要多得多viewDidUnload,然后你可能会遇到多次获得相同通知的问题.