2009-06-04 11 views
0

あなたがそれらは、キーボードによって隠されたときに、所定の位置にテキストビューをスクロールするためにそれらを必要とするかもしれないと私は、iPhone上でこれらの通知について知っている:すべてのUIRespondersにiPhoneの通知がありますか?

  • UIKeyboardWillShowNotification
  • UIKeyboardDidShowNotification
  • UIKeyboardWillHideNotification
  • UIKeyboardDidHideNotification

今、私はあなたが毎回更新したいと思う価値がありますserは何らかの入力を入力し、ANYコントロールを使用します。しかし、ここではTextViews、TextFields、Pickers、SegmentedViewsなど、さまざまなコントロールを扱っています。

すべてのUIRespondersから送信される通知に登録できる方法はありますか?

私は上記以外の通知の種類を探しています - どこにでも明確なリストがありますか?

答えて

1

理論的には、IBのアクションに付けることができるイベントのタイプを見ても、valueChangedは完全である(これらは通知ではありません)。

悲しいことに、それはすべてのタイプのレスポンダーによって解雇されません。そのため、普遍的な方法はありません。おそらく、すべてのタイプのアクションを処理するメソッドを持つクラスをまとめ、ページ上の要素に合ったものを結びつけましょう。

0

私は右のあなたの質問を取得するかどうかわからないんだけど、あなたがオブザーバーを追加するとき、オブジェクトの引数にnilを渡すことによって、すべてのオブジェクトによって送信される通知を登録することができます

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(keyboardExposes:) 
              name:UIKeyboardWillShowNotification 
              object:nil]; 

あなたの質問を理解した後、私はこれを次のように追加しました。

タイプ(名前)は文字列であり、誰でも新しい通知(私的使用のみを含む)を作成できるので、すべての通知の明確なリストはありません。しかし、あなたはiPhone SDKから通知された通知を簡単にリストすることができます:

find /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.1.sdk/ \ 
    -name "*.h" -exec cat {} \; \ 
    | grep -E "NSString[[:space:]]*\*[[:space:]]*(const)?[[:space:]]*[[:alnum:]]+Notification" \ 
    | grep -E -o "[[:alnum:]]+Notification" 

これは46の通知をリストしています。

+0

他の種類の通知を探していますが、他のイベントの追跡に活用できる可能性があります。 – bpapa

0

あなただけのようにもnilとして名を登録し、すべての通知を受信したい場合:

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

あなたは、あなたが実際にどれのことができます見つけるの後に対処したいものの通知を決定することができます受け取ります。

関連する問題