【发布时间】:2017-07-05 08:00:22
【问题描述】:
我正在使用 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 文本字段开头,我可以不要让他们一起工作。我必须在不同的班级做吗? 我知道这是一个基本问题,但它是学习过程的一部分。
这是我要合并的两个代码:
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
}
和:
func textField(_ textField: UITextField,
shouldChangeCharactersIn range: NSRange,
replacementString string: String) -> Bool
{
var startString = ""
if (textField.text != nil)
{
startString += textField.text!
}
startString += string
let limitNumber = Int(startString)
if limitNumber! > 360
{
return false
}
else
{
return true;
}
}
它们都在 ViewController 类中。
感谢您的帮助!
【问题讨论】:
-
对于这种情况,我认为您不需要确定哪个
textfield是哪个。这些函数中的所有变量都是本地的。这些是UITextFieldDelegate的功能。您是否将所有UITextFields 设置为self?