目标C到斯威夫特

时间:2015-12-23 13:55:29

标签: objective-c swift

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

2 个答案:

答案 0 :(得分:2)

我不知道如何将代码转换为swift 完全,但我可以提供更好的方法来实现它:

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代码。这是混合面向对象和程序样式的不太好的方式,但你可以用swift中的全局函数实现它:

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

答案 1 :(得分:-1)

以上代码的Swift代码:

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