如何知道哪个对象发送了通知

时间:2014-07-28 09:26:50

标签: ios objective-c cocoa-touch

当键盘出现时,我需要在UIScrollView内移动UI元素,以便用户可以看到它。

为了实现这种行为,我调用了以下方法:

- (void)registerForKeyboardNotifications {
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(keyboardWasShown:)
                                                 name:UIKeyboardDidShowNotification
                                               object:nil];

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(keyboardWillBeHidden:)
                                                 name:UIKeyboardWillHideNotification
                                               object:nil];
}

- (void)deregisterFromKeyboardNotifications {
    [[NSNotificationCenter defaultCenter] removeObserver:self
                                                    name:UIKeyboardDidHideNotification
                                                  object:nil];

    [[NSNotificationCenter defaultCenter] removeObserver:self
                                                    name:UIKeyboardWillHideNotification
                                                  object:nil];
}

viewWillAppear:viewWillDisappear:方法中。

但是,在我的情况下,在同一个视图控制器上有两个文本视图,但我需要移动UI元素,只有其中一个。我该怎么做?我可以以某种方式只为一个对象调用addObserver或检查哪个对象叫它吗?

提前致谢。

2 个答案:

答案 0 :(得分:1)

您可以询问文本视图是否具有键盘焦点:

if ([myTextView1 isFirstResponder]) {
    // Do this
} else if ([myTextView2 isFirstResponder]) {
    // Do that.
}

答案 1 :(得分:1)

将您的发件人与通知对象或用户信息一起传递

- (void)postNotificationName:(NSString *)aName object:(id)anObject userInfo:(NSDictionary *)aUserInfo;