例如,我具有符合一个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