سؤال

I want to register to UIKeyboardDidHideNotification that only my UIViewController is issuing.

When I do :

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHide:) name:UIKeyboardDidHideNotification object:self];

I'm not getting any calls to keyboardDidHide: and when I do :

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHide:) name:UIKeyboardDidHideNotification object:nil];

I'm getting calls from all the other view controller as well as my own.

How can I register to the UIKeyboardDidHideNotification raised only by a specific view controller ?

هل كانت مفيدة؟

المحلول

You have no way to register for a UIKeyboardDidHideNotification coming from a specific controller.

If using UIKeyboardWillHideNotification, you could check if one of the UITextView inside your controller is the first responder.

Using UIKeyboardDidHideNotification I guess you need to use delegate methods for all your UITextView and save the last one that was edited. I don't think of any other alternative.

Else, if the issue is to perform the method called by UIKeyboardDidHideNotification only on the visible controller, the solution by @sviatoslav-yakymiv works well.

نصائح أخرى

Object for UIKeyboardDidHideNotification is always nil. Try to add observer in viewWillAppear and remove in viewDidDisapper methods.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top