这就是我限制在两个textFields中输入的字符...
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if textField == textField1 {
if (textField1.text?.characters.count)! + (string.characters.count - range.length) > 11 {
return false
}
return true
} else if textField == textField2 {
if (textField2.text?.characters.count)! + (string.characters.count - range.length) > 15 {
return false
}
}
return true
}
但问题是只有textField1
不允许输入超过11个字符,但textField2
接受任意数量的字符,而不应允许输入超过15个字符。
答案 0 :(得分:2)
由于您的代码没有任何问题,您可以尝试以下检查清单:
breakpoint
阻止else if textField == textField2 {}
(或打印)
delegate
的{{1}}是否也设为textField2
如果控件来到self
块,则代码必须正常工作。
答案 1 :(得分:1)
我认为你没有在viewDidLoad中设置委托,
import UIKit
class ViewController: UIViewController, UITextFieldDelegate{
@IBOutlet var textField1 :UITextField!
@IBOutlet var textField2 :UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.textField1.delegate = self
self.textField2.delegate = self
}
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if textField == textField1 {
if (textField1.text?.characters.count)! + (string.characters.count - range.length) > 11 {
return false
}
return true
} else if textField == textField2 {
if (textField2.text?.characters.count)! + (string.characters.count - range.length) > 11 {
return false
}
}
return true
}
答案 2 :(得分:0)
也许你忘记设置textField2的委托了,我做了一个测试,你的代码工作正常!