试图循环UIView和所有子视图以获得第一个响应者,而不是工作

时间:2015-01-27 01:42:06

标签: ios swift uiview first-responder

我正在尝试通过循环显示主First Responder及其所有UIView及其所有SubViews来找到当前关注的SubViews nil 1}}通过递归,但我想出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

这看起来是否正确?为什么我在使用它时会看到{{1}}视图?

2 个答案:

答案 0 :(得分:2)

如果对subView.getCurrentFirstResponder()的递归调用实际找到第一响应者,则代码不会返回任何内容。

答案 1 :(得分:0)

试试这个:

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