AddObserver UIKeyboardWillShowNotification指定对象的麻烦

时间:2011-11-30 08:44:52

标签: iphone objective-c

我正在尝试在键盘出现时收到通知,但我遇到的情况是我有2个UITextView并且需要能够区分它们。出于某种原因,我无法弄清楚如何使用“addObserver”的object参数来过滤它。我有这样的事情:

 UITextView* w = mSubview.mText;
 NSNotificationCenter* dnc = [NSNotificationCenter defaultCenter];
 [dnc addObserver:self selector:@selector(showNotesKeyboard:)  name:UIKeyboardWillShowNotification object:w ];

每当我指定w时,我都不会输入showNotesKeyboard。只有当我通过nil时才会收到通知。我必须在这里找到一些东西,请帮助我。 谢谢!

3 个答案:

答案 0 :(得分:2)

您可以在文本视图开始编辑时添加观察者吗?编辑将显示键盘。

UITextView* w = mSubview.mText;
[w addTarget:self action:@selector(showNotesKeyboard:) forControlEvents:UIControlEventEditingDidBegin];

答案 1 :(得分:1)

根据我的说法,只有当它为零时才会被调用,因为它是系统生成的通知,只有在为其中一个类创建自定义通知时才能指定对象。我的意思是当你自己发布这个通知时。

答案 2 :(得分:1)

这是文档中对UIKeyboardWillShowNotification的讨论

  

在显示键盘之前立即发布。

     

通知对象为零。 userInfo字典包含   有关键盘的信息。使用“键盘”中描述的键   通知用户信息键“获取的位置和大小   userInfo字典中的键盘。

因此,如果您指定nil之外的发件人对象,则不会收到任何通知。如果您想知道哪个UITextView处于活动状态,您可以检查哪个是第一个响应者。