2013-06-26 62 views
0

我有一個UITextField,我將它從它拖到它的主人在故事板中設置delegate爲什麼委託方法在沒有聲明協議一致性的情況下工作?

而在我的controller.h文件中,我沒有聲明該類符合UITextFieldDelegate協議。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string工程!它只是工作!

我想知道爲什麼?

我以前遇到過這種情況,當時我將UITableView設置爲沒有UITableViewDelegateUITableViewDataSource的控制器。

+0

它發生時,當您給文件的所有者和連接工具之間的連接。所以委託方法將開始工作 – bhanu

+0

檢查你的xib文件。可能是連接到文件所有者的代理 – manujmv

+0

OP不詢問是否設置了'textField.delegate = self'。他在問,爲什麼代表團沒有向** UITextFieldDelegate **協議聲明**符合**這只是他使用了錯誤的術語。 – 2013-06-26 06:49:34

回答

2

由於委派對象(UIWebViewUITextField,UITableView等)不檢查代理是否符合協議,因此調用方法。他們只對實際上響應某個委託方法感興趣。

協議聲明畢竟只是編譯器的提示。