2015-12-23 45 views
-5

swift中的这个翻译是什么?它是某种变量类吗?Objective C to Swift

static UIView *FXFormsFirstResponder(UIView *view) 
{ 
    if ([view isFirstResponder]) 
    { 
     return view; 
    } 
    for (UIView *subview in view.subviews) 
    { 
     UIView *responder = FXFormsFirstResponder(subview); 
     if (responder) 
     { 
      return responder; 
     } 
    } 
    return nil; 
    } 

原文出处:https://github.com/nicklockwood/FXForms/blob/master/FXForms/FXForms.m

+0

你能在这里贴上'FXFormsFirstResponder'的声明?这段代码看起来像一个函数类型的匿名静态变量,并且将在swift中闭包(不确定)。 – kelin

+0

您发布的代码只是一个C函数。 (如果它是UIView的一个类别,那么它会更加“优雅”。) –

+0

我已经使用原始源代码的链接更新了帖子。 – Angie

回答

-1

斯威夫特代码上面的代码:

var FXFormsFirstResponder: UIView 
if view.isFirstResponder() { 
    return view 
} 
for subview: UIView in view.subviews { 
    var responder: UIView = FXFormsFirstResponder(subview) 
    if responder != nil { 
     return responder 
    } 
} 
return nil 
2

我不知道如何将您的代码转换为迅速准确,但我可以提供一个更好的实施方式:

extension UIView 
{ 
    func firstResponder() -> UIView? 
    { 
     if (self.isFirstResponder) 
     { 
      return self 
     } 
     for subview in subviews 
     { 
      if let responder = subview.firstResponder() 
      { 
       return responder 
      } 
     } 
     return nil 
    } 
} 

更新:FXFormsFirstResponder()只是一个c函数(不是Objective-c),但是里面有一些Obj-c代码。这是不是很好地混合面向对象和程序的风格,但你可以在迅速全局函数实现:

func FXFormsFirstResponder(view: UIView) -> UIView? 
{ 
    if (view.isFirstResponder) 
    { 
     return view 
    } 
    for subview in view.subviews 
    { 
     if let responder = FXFormsFirstResponder(subview) 
     { 
      return responder 
     } 
    } 
    return nil 
}