如何做一个委托方法知道什么时候被调用(How does a delegate method know

2019-09-18 06:01发布

我只是想知道究竟怎样的委托方法,知道什么时候被调用? 例如在UITextFieldDelegate协议textFieldDidBeginEditing:方法编辑时是所谓的文本框开始(提供我实现此方法)。

那么究竟怎样的代码来检测何时调用textFieldDidBeginEditing: 系统是否只检查是否textFieldDidBeginEditing:已经实现,如果它运行的方法? 有没有办法,我没有看到引擎盖下的东西吗?

Answer 1:

究竟。

我不能保证苹果的框架代码是如何引擎盖下实现的,而是一个非常普遍感觉是:

if ([[self delegate] respondsToSelector:@selector(someInstance:didDoSomethingWith:)]) {
    [[self delegate] someInstance:self didDoSomethingWith:foo];
}

这可以让你有可选的委托方法,这似乎是你的问题。



Answer 2:

该代码不“检测时,称之为”一个委托方法。 文本域接收事件时,并调用它的代表的方法(其具有textFieldDidBeginEditing:实现的方法)。

总之,当你点击文本字段开始编辑文本字段说:“哦,我现在编辑!” 而在内部调用[self.delegate textFieldDidBeginEditing:self] ,这里的代表是在你设置为所述代表(通常是一个UIViewController子类)实例



文章来源: How does a delegate method know when to be called