我只是想知道委托方法究竟何时被调用?例如,在UITextFieldDelegate
协议中,在文本字段中开始编辑时调用textFieldDidBeginEditing:
方法(假设我实现了此方法)。
那么代码究竟是如何检测何时调用textFieldDidBeginEditing:
的呢?系统是否只检查textFieldDidBeginEditing:
是否已经实现,是否运行该方法?我有没有看到引擎盖下的东西?
答案 0 :(得分:3)
完全。
我不能保证Apple的框架代码是如何在幕后实现的,但是一个非常普遍的副词是:
if ([[self delegate] respondsToSelector:@selector(someInstance:didDoSomethingWith:)]) {
[[self delegate] someInstance:self didDoSomethingWith:foo];
}
这允许你有可选的委托方法,这似乎是你的问题。
答案 1 :(得分:0)
代码没有检测到何时致电'委托方法。 textField接收一个事件,并在其上调用该方法的委托(已实现textFieldDidBeginEditing:方法)。
简而言之,当你点击文本字段开始编辑时, textField 会说“哦,我现在正在编辑!'并在内部调用[self.delegate textFieldDidBeginEditing:self]
,其中委托是您已设置为委托的实例(通常是UIViewController子类)