试图遍历 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
我试图通过循环遍历主要 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