试图遍历 UIView 和所有子视图以获得第一响应者,但无法正常工作

Trying to loop through UIView and all subviews to get the first responder, not working

我试图通过循环遍历主要 UIView 和所有 SubViews 以及所有 SubViews 递归来找到当前焦点 First Responder,但我想出了 nil.

extension UIView {
func getCurrentFirstResponder() -> AnyObject? {
    if self.isFirstResponder() {
        return self
    }

    for subView: UIView in self.subviews as [UIView] {
        if subView.isFirstResponder() {
            return subView
        }
        else {
            subView.getCurrentFirstResponder()
        }
    }
    return nil
}
}

let focusedView = self.view.getCurrentFirstResponder() as? UIView

这看起来正确吗?为什么我在使用它时得到 nil 视图?

您的代码没有 return 任何东西,以防对 subView.getCurrentFirstResponder() 的递归调用实际上找到第一响应者。

试试这个:

for subView: UIView in self.subviews as [UIView] {
    if subView.isFirstResponder() {
        return subView
    }
    else {
        if let sub = subView.getCurrentFirstResponder() {
           return sub;
        }
    }
}
return nil