[英]Calling the delegate methods
我仍然無法完全理解這些委托方法是如何被調用的。 我在一個類中有UIViewController
, UITextFieldDelegate
,它將調用其委托方法而不指定textField.delegate = self;
但是對於像UIWebViewDelegate
這樣的不同目的,我們應該輸入像webView.delegate = self;
似乎它正在調用它的委托方法。 完善。
但現在我遇到了一個問題。 我在同一個類中使用CLLocationManagerDelegate
和CALayer
。 我兩個都給了location.delegate =self;
和layer.delegate =self;
在某些時候,兩者都相互沖突,只有一個是CLLocationManagerDelegate
或CALayer
。 另一件事就是停止了。 我不知道為什么會這樣發生? 任何原因? 我們怎樣才能克服這一點。 甚至我計划使用其他一些frameWork,比如說UIWebView
。 對於那些委托方法,我也將面臨同樣的問題。 你能告訴我它為什么會這樣嗎?
在沒有指定它們的情況下調用其委托的類具有默認實現,這意味着它們已經知道該做什么,並且只有在重寫這些方法時才會改變它們的行為。
將2個或更多個類設置為同一個委托不應相互干擾(除非出於非常奇怪的原因,在兩個自定義類中該方法的命名方式相同)。
您的問題很可能是您沒有實現這些方法或使用這些類錯誤的事實。
例如,位置管理器要求您創建實例,配置它並開始運行更新。 這種類型的委托最常用的方法是“確實更新位置”(或類似的東西)。 如果您希望每次收到新位置時都要通知您必須執行的操作。 否則,您必須隨時手動讀取位置。
作為建議,每次為對象設置委托時,都必須執行object.delegate = self; 事情。 您可能已經注意到,在標題中指定它符合該協議之前,您將收到警告:例如。
只需控制單擊UITextFieldDelegate字。
尋找@required下的方法,你必須始終實現。 @optional有默認實現,所以除非你想改變它不需要實現它們的行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.