2009-06-04 99 views
0

我知道iPhone上的这些通知,因为您可能需要它们来滚动文本视图到位时,他们被键盘遮掩:所有UIResponders是否都有iPhone通知?

  • UIKeyboardWillShowNotification
  • UIKeyboardDidShowNotification
  • UIKeyboardWillHideNotification
  • UIKeyboardDidHideNotification

现在,我有一些值,我想更新每次你ser使用ANY控制进入一些输入。但我在这里处理各种不同的控制 - TextViews,TextFields,Pickers,SegmentedViews等。

有没有办法可以注册所有UIResponders发送的通知?

我正在寻找除上面列出的通知以外的通知类型 - 是否有任何地方的权威列表?

回答

1

从理论上看,您可以附加到IB中的操作的事件类型,valueChanged将是完美的(这些不是通知)。

可悲的是,并非所有类型的响应者都解雇了。所以没有一个好的通用方法来做到这一点......也许把一个有方法的类放在一起,可以处理所有类型的动作,并将任何有意义的页面上的元素联系起来。

0

我不知道如果我得到你的问题的权利,但你可以通过添加观察者时传递零的对象参数的任何对象发送注册通知:

[[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 2009-06-04 20:07:25

0

如果你想收到所有通知,只是名称作为nil注册以及:

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

然后,您可以决定哪些通知其实是想找出哪些可以后处理接收。