0

我能找到的所有设置通知的示例如下所示:

[nc addObserver:self selector:@selector(keyboardWillShow:) name: UIKeyboardWillShowNotification object:nil];

其中对象始终设置为零。object 是 notificationSender,在文档中是这样定义的:

“观察者想要接收其通知的对象;也就是说,只有这个发送者发送的通知才会传递给观察者。当为 nil 时,通知中心不使用通知的发送者来决定是否将其传递给观察者。”

我只想为一个特定的文本视图接收键盘通知,所以我想告诉 addObserver ,但我不知道为对象提供什么。我尝试了绑定到我感兴趣的文本视图的出口变量,但这只是导致我根本没有收到任何通知。

有什么建议么?

4

3 回答 3

1

UIKeyboardWillShowNotification来自您的窗口实例,并且出于所有意图和目的是“系统”通知。键盘显示或不显示,它并不是与特定控件绑定的东西。

如果您想在用户输入特定文本字段时执行某些操作,您可能应该在文本字段的委托中控制它。

于 2009-04-03T17:59:12.977 回答
0

在这种情况下,您无法仅获得一个特定文本视图的通知,因为 UIKeyboardWillShowNotification 的文档说“通知对象为零。”。

如果您的特定文本视图是FirstResponder,您必须检查您的keyboardWillShow impl。

于 2009-04-03T17:56:59.520 回答
0

我有两个相互竞争的需求 - 我必须使用键盘通知,因为我需要获取键盘高度,这似乎只能通过这种方式获得,但我还需要知道我在哪个文本视图中,这意味着还需要使用 textViewDidBeginEditing代表。经过一番折腾后,我终于求助于在通知方法中获取键盘高度并将其存储在实例变量中,然后可以在委托方法中使用(我需要向上滚动视图,因此底部文本视图不是大部分当他们开始打字时隐藏在他们的键盘下)。有点不雅,但它有效。

谢谢指点!

于 2009-04-04T00:42:39.013 回答