Ios Swift:如何同时使用两个func文本字段

Ios Swift:如何同时使用两个func文本字段,ios,swift,Ios,Swift,我使用的是Xcode 8和Swift 3 我有一个项目有3个文本字段,1个按钮清除和标签显示结果 在我的类ViewController中,我有: class ViewController: UIViewController,UITextFieldDelegate { @IBOutlet weak var input1: UITextField! @IBOutlet weak var input2: UITextField! @IBOutlet weak var input3: UITextFi

我使用的是Xcode 8和Swift 3

我有一个项目有3个文本字段,1个按钮清除和标签显示结果

在我的类ViewController中,我有:

class ViewController: UIViewController,UITextFieldDelegate {

@IBOutlet weak var input1: UITextField!
@IBOutlet weak var input2: UITextField!
@IBOutlet weak var input3: UITextField!
@IBOutlet weak var lblResult: UILabel!
@IBOutlet weak var clearButton: UIButton!

我想将文本字段输入限制为最多3位数,但也要限制为360。我设法得到了这两种东西的代码,如果一次只使用一个,它们就可以工作,但因为它们都是以func textfield开头的,所以我无法让它们一起工作。我必须在不同的班级做吗? 我知道这是一个基本问题,但它是学习过程的一部分

以下是我想要组合的两个代码:

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, 
               replacementString string: String) -> Bool
{
    let maxLength = 3
    let currentString: NSString = textField.text! as NSString
    let newString: NSString = currentString.replacingCharacters(in: range, with: string) as NSString
    return newString.length <= maxLength
}
它们都在类ViewController中


谢谢你的帮助

您需要在
func textField(textField:UITextField,shouldchangeCharactersinrange:NSRange,replacementString:string)->Bool
中添加
if语句,检查当前
textField
,如下所示:

func textField(_ textField: UITextField,  shouldChangeCharactersIn range: NSRange,  replacementString string: String) -> Bool {
   if textFiled == input1 {
   // do logic for input1
   } else if textFiled == input2 {
   // do logic for input2
   }
}

Swift
switch
语句将执行此操作

func textField(_ textField: UITextField,
               shouldChangeCharactersIn range: NSRange,
               replacementString string: String) -> Bool
{
    switch textField {
    case input1:
        // ...
    case input2:
        // ...
    case input3:
        // ...
    default:
        break
    }
}

如果我没有弄错的话,以下是您所需要的:

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, 
               replacementString string: String) -> Bool {
    let maxLength = 3
    let limitValue = 360

    let text = textField.text!
    let currentString: NSString = text as NSString
    let newString: NSString = currentString.replacingCharacters(in: range, with: string) as NSString

   var startString = ""

    if !text.isEmpty {
        startString += text
    }
    startString += string

    let limitNumber = Int(startString)!

    return limitNumber < limitValue && newString.length <= maxLength
}
func textField(textField:UITextField,shouldChangeCharacters范围:NSRange,
替换字符串:字符串)->Bool {
设maxLength=3
设limitValue=360
让text=textField.text!
让currentString:NSString=文本作为NSString
让newString:NSString=currentString.replacingCharacters(在:范围内,带:字符串)作为NSString
   var startString=“”
if!text.i空{
startString+=文本
}
startString+=字符串
让limitNumber=Int(startString)!
返回limitNumberreturn limitNumber
我的答案很糟糕,因为哈维姆的答案是正确的,但我写这篇文章是因为我没有足够的代表投票给那些以无用的方式互相投票的人

  func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange,
               replacementString string: String) -> Bool
{
    let maxLength = 3
    let currentString: NSString = textField.text! as NSString
    let newString: NSString = currentString.replacingCharacters(in: range, with: string) as NSString

    var startString = ""
    if (textField.text != nil)
    {
        startString += textField.text!
    }
    startString += string
    let limitNumber = Int(startString)


    return newString.length <= maxLength && limitNumber! <= 360
}
func textField(textField:UITextField,shouldChangeCharacters范围:NSRange,
替换字符串:字符串)->Bool
{
设maxLength=3
让currentString:NSString=textField.text!作为NSString
让newString:NSString=currentString.replacingCharacters(在:范围内,带:字符串)作为NSString
var startString=“”
如果(textField.text!=nil)
{
startString+=textField.text!
}
startString+=字符串
设limitNumber=Int(开始字符串)

return newString.length对于这种情况,我认为您不需要识别哪个
textfield
是哪个。这些函数中的所有变量都是本地变量。这些是
UITextFieldDelegate
的函数。您是否将所有
UITextField
的函数都设置为
self
对FONSPA的需求更准确。但从全球来看,是的,我同意,这看起来像。不是我的业务。它直接来自FONSPA的代码。我没有运行单元测试来检查他的功能是否正确。我只是回答他实际的问题。不是真的。回报与FONSPA的需求不一样,更准确。但从全球来看,是的,我同意,这看起来像“我设法得到了这两个东西的代码,它们都能工作”-FONSPA。我相信,因为这需要时间。我只是回答了他的问题。我没有读他的代码。但是,我会的。顺便问一下,当我插入3位数字时,你知道如何自动将光标从第一个文本字段切换到第二个文本字段等等吗?谢谢
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, 
                   replacementString string: String) -> Bool {
    let maxLength = 3
    let limitValue = 360

    let text = textField.text!
    let currentString: NSString = text as NSString
    let newString: NSString = currentString.replacingCharacters(in: range, with: string) as NSString

   var startString = ""

    if !text.isEmpty {
        startString += text
    }
    startString += string

    let limitNumber = Int(startString)!

    let newLength: Int = newString.length

    if textField == input1 {
        if newLength == maxLength {
            input2.becomeFirstResponder()
        }
    }
    if textField == input2 {
        if newLength == maxLength {
            input3.becomeFirstResponder()
        }
    }

    if textField == input3 {
        if newLength ==  maxLength {
           self.view.endEditing(true)
        }
    }

    return limitNumber < limitValue && newLength <= maxLength
}
  func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange,
               replacementString string: String) -> Bool
{
    let maxLength = 3
    let currentString: NSString = textField.text! as NSString
    let newString: NSString = currentString.replacingCharacters(in: range, with: string) as NSString

    var startString = ""
    if (textField.text != nil)
    {
        startString += textField.text!
    }
    startString += string
    let limitNumber = Int(startString)


    return newString.length <= maxLength && limitNumber! <= 360
}