2014-06-08 58 views
0

我的班級是UIInputViewController的子班。我想訪問UIInputViewControllertextDocumentProxy對象,以便我可以撥打insertTexttextDocumentProxy無法訪問Swift中的textDocumentProxy協議函數

從文檔中,textDocumentProxy符合UITextDocumentProxy符合UIKeyInput

基於上述邏輯,爲什麼我不能簡單地做到以下幾點。

self.textDocumentProxy.insertText("Hello World") 

相反,我得到以下錯誤

「NSObject的」沒有一個名爲成員「insertText」

我必須做一些特種鑄造的?

這裏是文檔的一個片段。

class UIInputViewController : UIViewController, UITextInputDelegate, NSObjectProtocol { 
    var textDocumentProxy: NSObject! { get } 
} 

protocol UITextDocumentProxy : UIKeyInput, UITextInputTraits, NSObjectProtocol { 
    var documentContextBeforeInput: String! { get } 
    var documentContextAfterInput: String! { get } 
} 

protocol UIKeyInput : UITextInputTraits, NSObjectProtocol { 
    func hasText() -> Bool 
    func insertText(text: String!) 
    func deleteBackward() 
} 

回答

4

您可以調用此方法在單行這樣

(self.textDocumentProxy as UITextDocumentProxy as UIKeyInput).insertText("Hello World!") 

(self.textDocumentProxy as UIKeyInput).insertText("Hello World!") 
0

因爲繼承的協議,我不得不倒下兩次。

let textDocument = self.textDocumentProxy as UITextDocumentProxy as UIKeyInput