在我的 iOS 应用程序中,我有几个可以处理用户输入的 UIElement
:文本字段、可编辑的 webview 等。每次我在键盘上向这些 UIElement
中写入内容时(显然)会出现。在它发生之前,我可以通过观察 UIKeyboardWillShowNotification
来捕捉这个事件。
我想知道找出哪个 UIElement
调用了这个 Action 的方法是什么。
感谢您的帮助!
最佳答案
当用户点击的 View 设置为 FirstResponder 时键盘启动,所以我认为这个问题相当于说 how do I get the current first responder何时收到 UIKeyboardWillShowNotification?
answer to that question 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 的处理程序中使用它来找出导致它的原因。
关于iOS 获取哪个 uielement 调用了 UIKeyboardWillShowNotification,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11158813/