2015-12-23 71 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 
}