例如,我具有符合一個UITextFieldDelegate協議,並從該協議繼承的方法的視圖控制器..,委託對象如何知道調用委託對象上的WHICH方法?
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange,
replacementString string: String) -> Bool {
// do some stuff...
return true
}
在main.storyboard文件,我控制拖着TextField對這個視圖控制器,並點擊'委託'讓項目知道我的視圖控制器現在是這個文本字段的代表。
現在...我知道這個視圖控制器現在在我的UITextField中稱爲「委託」屬性,但在我的視圖控制器中,我有多個方法和屬性在我的文本字段。
如何知道文本字段作爲textField(_:shouldChangeCharactersIn:replacementString)函數中的第一個參數傳入?與任何其他隨機無關的功能相反?
由於
加成相關的問題 在我的視圖控制器(所述的UITextField的代表),有一個@IBAction目標函數,其源是相同的文本字段輸入對象。現在...我在該IBAction函數中具有功能,基本上可以在屏幕上輸入輸入值的輸入UPON編輯內容。
但是,使用這個新的委託函數,我實現了一些功能,如果有兩個相同的字符,則不會更改輸入的值。當我運行我的應用程序時,我可以看到,因爲委託功能正在工作,當兩個相同的數字在文本字段中時,該值不會在文本字段中更新,因此,@IBAction函數甚至不會被調用(或者至少沒有任何東西印在控制檯上)。
這表明,對我來說,委託函數優先於@IBAction函數。
只需尋找關於該觀察的真實或錯誤答案。謝謝!
你的文本字段將調用它必須調用的委託方法(所以它可以是所有這些方法)。每種方法都有不同的目的。如果你只需要使用'textField(_:shouldChangeCharactersIn:replacementString)',那麼你只能實現這個委託方法。 – Randy
如果你想開始實施蘋果的東西(iOS,MacOS,tvOS等),你必須學習更多關於[委託](https://developer.apple.com/library/content/documentation/General/ Conceptual/DevPedia-CocoaCore/Delegation.html),因爲它是這些技術中使用的基本模板 – Randy