1

在我的 iOS 应用程序中,我有几个UIElement可以处理用户输入的 s:文本字段、可编辑的 web 视图等。每次我在这些UIElements 中写一些东西时,键盘(显然)都会出现。在它发生之前,我可以通过观察UIKeyboardWillShowNotification.

我想知道如何找出UIElement调用此操作的方法。

谢谢你的帮助!

4

2 回答 2

3

当用户点击的视图设置为 FirstResponder 时,键盘启动,所以我认为这个问题相当于说收到 UIKeyboardWillShowNotification 时如何获取当前的第一响应者?

Thomas Muller 对这个问题的回答是使用类扩展,如下所示:

@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 的处理程序中使用它来找出导致它的原因。

于 2012-06-22T15:19:33.870 回答
-1

我认为本文档的第 4 节(移动位于键盘下方的内容)可以提示您了解哪些元素具有键盘。

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

于 2012-06-22T15:09:01.043 回答