2009-04-03 5 views
0

私はこのような通知ルックアップ設定を見つけることができるすべての例:notificationSenderの指定方法は? (ココアタッチ)

[NC addObserver:自己セレクタ:@selector(keyboardWillShow :)名:UIKeyboardWillShowNotificationオブジェクト:nilを];

オブジェクトは常にnilに設定されます。オブジェクトはnotificationSenderであり、これはドキュメントに従って定義されている:

"オブザーバが受信したい通知、それをオブザーバーに送るかどうかを決定するために通知の送信者を使用しないでください。

特定のテキストビューのキーボード通知のみを受け取りたいので、addObserverに通知しますが、そのオブジェクトに対して何を与えるべきかわかりません。興味のあるテキストビューにバインドされているコンセント変数を試してみましたが、ただ通知が届かなくなってしまいました。

提案がありますか?

答えて

1

UIKeyboardWillShowNotificationはあなたのウィンドウインスタンスから来ており、すべての目的と目的のために「システム」通知です。キーボードが表示されているか表示されていないかは、実際には特定のコントロールに関連付けられているものではありません。

ユーザーが特定のテキストフィールドを入力したときに何かしたい場合は、代わりにテキストフィールドの代理人で制御する必要があります。

0

この場合、UIKeyboardWillShowNotificationのドキュメントには「通知オブジェクトはありません」というメッセージが表示されるため、特定のテキストビューに対してのみ通知を受け取ることはできません。

特定のテキストビューがFirstResponderの場合、keyboardWillShow implをチェックインする必要があります。

0

2つの競合するニーズがありました。キーボードの高さを取得する必要があったため、キーボードの通知を使用する必要がありました。これはそのようにしか見えませんでしたが、どのテキストビューであったかを知る必要がありましたtextViewDidBeginEditingデリゲートも使用します。私は最終的に、通知メソッドでキーボードの高さを取得し、インスタンス変数に格納することに頼っていましたが、これはデリゲートメソッドで使用できるようになりました(私はビューをスクロールして、入力が始まるとキーボードの下に隠されます)。ちょっと面白くないですが、うまくいきます。

ポインタありがとうございます!