iOS获取哪个uielement调用UIKeyboardWillShowNotification

时间:2012-06-22 15:00:11

标签: ios ios5 uielement

在我的iOS应用程序中,我有几个可以处理用户输入的UIElement:文本字段,可编辑的网页浏览等等。每当我在这些UIElement中写入内容时,键盘(显然)会出现。在它发生之前,我可以通过观察UIKeyboardWillShowNotification来捕捉这个事件。

我想知道找出UIElement调用此操作的方法是什么。

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

当用户点击的视图设置为FirstResponder时,键盘会启动,所以我认为这个问题相当于在收到UIKeyboardWillShowNotification时说how do I get the current first responder

托马斯·穆勒的answer to that question使用了类扩展:

@implementation UIView (FindFirstResponder)
- (UIView *)findFirstResponder
{
    if (self.isFirstResponder) {        
        return self;     
    }

    for (UIView *subView in self.subviews) {
        UIView *firstResponder = [subView findFirstResponder];

        if (firstResponder != nil) {
            return firstResponder;
        }
    }

    return nil;
}
@end

所以我认为您可以在UIKeyboardWillShow的处理程序中使用它来找出导致它的原因。

答案 1 :(得分:-1)

我认为本文档的第4部分(移动键盘下方的内容)可以为您提供有关知道该元素具有键盘的提示。

http://developer.apple.com/library/ios/#DOCUMENTATION/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html#//apple_ref/doc/uid/TP40009542-CH5-SW1