2014-04-08 18 views
0

我想知道如何在編輯特定文本框時觸發方法。如何將一組方法分配給UITextFieldDelegate

例如,它被解釋爲here如何使用多個函數將特定格式分配給文本框。但是,我不知道在哪裏複製粘貼這些函數。在解釋中說,使用UITextFieldDelegate,但我不知道它在哪裏。

我在xib中有一個AppDelegate類,一個ViewController類(包括它的xib)和一個UITextField。我希望代碼爲這個UITextField工作。

+0

您基本上需要更好地理解[protocols](https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/WorkingwithProtocols/WorkingwithProtocols.html)的概念。最有可能的是,你的視圖控制器將實現UITextFieldDelegate。一定要將你的視圖控制器設置爲XIB中UITextField的委託。 (在問題被擱置之前,我有了更長的回答。) – jxpx777

+0

@ jxpx777感謝您的回答。你能解釋一下嗎?你是否意味着當我拖動文本框時,該方法應該自動生成?我也不明白第三句話。再次感謝。 – gmind

+0

控制+單擊並從文本字段拖動到界面構建器中的視圖控制器圖標,並在其中設置委託。然後,將視圖控制器設置爲委託,並且需要手動將UITextFieldDelegate協議方法添加到視圖控制器,以便在文本字段嘗試在運行時調用它們時它們在那裏。 – jxpx777

回答

0

添加這些方法在ViewController.m類 然後在ViewController.m類的viewDidLoad方法

[yourTextField addTarget:yourTextFieldDelegate 
          action:@selector(reformatAsCardNumber:) 
        forControlEvents:UIControlEventEditingChanged]; 

設置reformatCardNumber:被稱爲每當文本字段觸發一個事件UIControlEventEditingChanged

也可以在Viewcontroller.h文件 和Thats Done中添加刪除項。

+0

非常感謝您的回答。我還有一個問題。我怎樣才能得到我的文本字段的名稱?我有2個文本框,我希望將這個方法應用於它們兩個。 – gmind

+0

只需在textboxname.delegete = self中註冊兩個文本框,每當textbox改變值時您都會觸發該方法 –

+0

@ Bhavik Kama:謝謝。 1)是否確定我應該在viewcontroller.m中正確寫入textboxname.delegete = self?因爲我實際上不知道如何獲取文本字段的名稱。 2)你能解釋一下爲什麼它會起作用嗎?這裏的自我指的是視圖控制器? textboxname.delegete = self究竟意味着什麼?再次感謝。 – gmind

相關問題