Ios 如何在自定义类中多次使用函数

Ios 如何在自定义类中多次使用函数,ios,function,swift3,xcode8,Ios,Function,Swift3,Xcode8,是否有任何方法来实施该计划 func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {} 两次?我正在尝试创建一个转换应用程序,该应用程序具有多个视图控制器,其中所有视图控制器都具有类似的UITextFields。我在www.globalnerdy.com上学习了一个很棒的教程,该教程展示了如何创

是否有任何方法来实施该计划

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {} 
两次?我正在尝试创建一个转换应用程序,该应用程序具有多个视图控制器,其中所有视图控制器都具有类似的
UITextFields
。我在www.globalnerdy.com上学习了一个很棒的教程,该教程展示了如何创建一个自定义类,该类将限制字符,并且只允许给定文本字段中的某些字符。代码完成后,可以在属性检查器中修改属性,而不是在视图控制器中修改属性。下面是我创建的
MaxLengthTextField
自定义类

class MaxLengthTextField: UITextField, UITextFieldDelegate {

private var characterLimit: Int?

required init?(coder aDecoder: NSCoder) {

    super.init(coder: aDecoder)

    delegate = self

}

@IBInspectable var maxLength: Int {

    get {

        guard let length = characterLimit else {

            return Int.max

        }

        return length

    }

    set {

        characterLimit = newValue

    }

}

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {

    guard string.characters.count > 0 else {

        return true

    }

    let currentText = textField.text ?? ""

    let prospectiveText = (currentText as NSString).replacingCharacters(in: range, with: string)


    return allowedIntoTextField(text: prospectiveText)


}

func allowedIntoTextField(text: String) -> Bool {

    return text.characters.count <= maxLength

}

}
我遇到的问题是限制代码中的小数点“”。我已经使用我在堆栈溢出上找到的代码实现了两次
func textField(textField:UITextField,shouldChangeCharactersIn…
函数(有效)用于限制小数,但由于特定文本字段已经是限制字符的自定义类,因此我无法使文本字段成为视图控制器的委托,同时限制“点”


非常感谢您提供的任何指导、参考和直接帮助!

在您的代码中,方法通过其签名或方法名称加参数(参数类型)的组合来唯一标识因此,在代码中不能有完全相同的方法两次。这将导致编译器错误

与其两次实现
textField(textField:UITextField,shouldchangeCharactersinrange:NSRange,replacementString:string)->Bool{}
方法,您应该做的是查看传入的
textField
参数,以确定哪个文本字段首先发送了委托方法

将视图控制器设置为
UITextFieldDelegate
,然后在视图控制器中为不同的文本字段设置出口。因此,如果文本字段为
text1
text2
,则委派方法如下所示:

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    if textField == text1 {
        // Handle text1 code
    } else if textField == text2 {
        // Handle text2 code
    }
}
希望以上内容对您有意义,但如果没有,请随时要求澄清:)

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    if textField == text1 {
        // Handle text1 code
    } else if textField == text2 {
        // Handle text2 code
    }
}