【发布时间】:2012-06-22 15:00:11
【问题描述】:
在我的 iOS 应用程序中,我有几个 UIElements 可以处理用户输入:文本字段、可编辑的 web 视图等。每次我在这些 UIElements 中写一些东西时,键盘(显然)都会出现。在它发生之前,我可以通过观察UIKeyboardWillShowNotification 来捕捉这个事件。
我想知道如何找出是哪个UIElement 调用了此操作。
感谢您的帮助!
【问题讨论】:
在我的 iOS 应用程序中,我有几个 UIElements 可以处理用户输入:文本字段、可编辑的 web 视图等。每次我在这些 UIElements 中写一些东西时,键盘(显然)都会出现。在它发生之前,我可以通过观察UIKeyboardWillShowNotification 来捕捉这个事件。
我想知道如何找出是哪个UIElement 调用了此操作。
感谢您的帮助!
【问题讨论】:
当用户点击的视图设置为FirstResponder时键盘启动,所以我认为这个问题相当于在收到UIKeyboardWillShowNotification时说how do I get the current first responder。
Thomas Muller 的 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 的处理程序中使用它来找出导致它的原因。
【讨论】:
【讨论】: